A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© masai158 高级黑马   /  2014-7-29 09:54  /  1480 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 masai158 于 2014-7-29 11:29 编辑

class MaxArr
{
        public static <T>  maxArr(<T>[] arr)  //为什么这里会编译失败
        {
                Arrays.sort(arr);
                System.out.println(Arrays.toString(arr));
                return arr[arr.length-1];
        }
}

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

13 个回复

倒序浏览
你在方法前面定义泛型,就代表接收参数是泛型了,你把参数列表里的泛型可以去掉了
回复 使用道具 举报
public class Test5 {

        public static void main(String[] args)
        {
                String[] arr = {"fds08","fas18","zfds18","dss18","kkds18"};
               
                String max = new MaxArr().maxArr(arr);
               
                System.out.println(Arrays.toString(arr) + "中最大元素是" + max);
        }

}

class MaxArr
{
        public <T> T  maxArr(T[] arr)
        {
                Arrays.sort(arr);
                System.out.println(Arrays.toString(arr));
                return arr[arr.length-1];
               
        }
}
回复 使用道具 举报
陈云阳 发表于 2014-7-29 10:19
你在方法前面定义泛型,就代表接收参数是泛型了,你把参数列表里的泛型可以去掉了 ...

NO。不是滴哟。
回复 使用道具 举报
本帖最后由 masai158 于 2014-8-11 16:19 编辑

{:2_31:}!!!我发现 泛型一定要  用
包装类。。

public class Test5 {

        public static void main(String[] args)
        {
        //        String[] arr = {"fds08","fas18","zfds18","dss18","kkds18"};
               
        //        String max = new MaxArr().maxArr(arr);
               
                Integer[] arr = {15,48,48,315,8,4,61,100};       //必须是引用数据类型,不可是基本数据类型
               
                Integer max = new MaxArr().maxArr(arr);
               
                System.out.println(Arrays.toString(arr) + "中最大元素是" + max);
        }

}

class MaxArr
{
        public <T> T  maxArr(T[] arr)
        {
                Arrays.sort(arr);
                System.out.println(Arrays.toString(arr));
                return arr[arr.length-1];
               
        }
}

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

回复 使用道具 举报
陈云阳 发表于 2014-7-29 10:19
你在方法前面定义泛型,就代表接收参数是泛型了,你把参数列表里的泛型可以去掉了 ...

还是谢谢你。{:2_42:}{:2_42:}{:2_42:}{:2_42:}{:2_42:}!!
回复 使用道具 举报
masai158 发表于 2014-7-29 10:30
!!!我发现 泛型一定要  用
包装类。。

是引用数据类型!
回复 使用道具 举报
王景琛 发表于 2014-7-29 11:03
是引用数据类型!

{:2_36:}{:2_36:}{:2_36:}{:2_36:}
你把代码复制过去。试一下。看引用行不行
回复 使用道具 举报
public class Test6
{
        public static void main(String[] args)
        {
/*                Integer[] numArr = {40,5,8,20,88,50,10,60};
                Integer key = 4;
                Integer index = getIndex(numArr,key);
                System.out.println(Arrays.toString(numArr) + "中" + key + "位置在:" + index );
*/
                String[] strArr = {"拉拉","嘻嘻","么么","嘎嘎","锤锤"};
                String key = "锤锤";
                int index = getIndex(strArr,key);
                System.out.println(Arrays.toString(strArr) + "中" + key + "位置在:" + index );
        }
       
        public static <T> int getIndex(T[] arr, T key)
        {       
                int index = -1;
                for(int i=0; i<arr.length; i++)
                {
                        if(!(arr[i].equals(key)))
                                continue;
                        else
                        {
                                index = i;
                                break;
                        }                               
                }       
                return index;
        }
}

真心觉得泛型很爽啊。。就是第一次定义有点难搞。如果真的搞懂了。真的是一次定义,多处使用。。
回复 使用道具 举报
哥们,为啥我这里可以编译过......我的编译环境是jdk1.6
运行结果:
[dss18, fas18, fds08, kkds18, zfds18]
[dss18, fas18, fds08, kkds18, zfds18]中最大元素是zfds18
回复 使用道具 举报
masai158 发表于 2014-7-29 11:05
你把代码复制过去。试一下。看引用行不行

你代码中还很多细节错误,当然不行,自己好好再看看吧
回复 使用道具 举报
本帖最后由 masai158 于 2014-7-29 11:14 编辑
tiandzwx 发表于 2014-7-29 11:08
哥们,为啥我这里可以编译过......我的编译环境是jdk1.6
运行结果:
[dss18, fas18, fds08, kkds18, zfds18 ...

因为是按照 自然顺序排序的。 使用的 Arrays.sort 函数。。。  "fds08","fas18","zfds18","dss18","kkds18"  这是原串
比较第一位  f  f   z  d   k。当然是 zfds18最大。。
如果不按照字符串顺序,你可以自定义比较器。。
回复 使用道具 举报
本帖最后由 masai158 于 2014-8-11 16:21 编辑
王景琛 发表于 2014-7-29 11:10
你代码中还很多细节错误,当然不行,自己好好再看看吧

今天看了张老师的数据。确实说了。在泛型中,不能是基本数据类型,必须是引用数据类型。已经多次证明了。答案我今天有改一下了
回复 使用道具 举报
今天看了张老师的数据。确实说了。在泛型中,不能是基本数据类型,必须是引用数据类型。
已经多次证明了。答案我今天有改一下了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马