| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:静态方法中的泛型
只看楼主 加入收藏
naixin
Rank: 2
等 级:论坛游民
帖 子:16
专家分:26
注 册:2013-10-5
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:2 
静态方法中的泛型
1.public static void show(T t){}
      错误
2.static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
    for (T o : a) {
        c.add(o);
    }    }
    正确
泛型不可以在静态方法 中使用,那么为什么2是正确的
2014-10-18 21:49
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:2 
程序代码:
package thread_437402;

public class GenericTest {

    public static <T> void show(T t) { // Generic Methods
        System.out.println(t);
    }

    public static void main(String args[]) {
        show("Hello");
        show(1);
    }
}


泛型可以用在静态方法中,像上面的例子会输出Hello和1
这种方法称为【泛型方法Generic Methods】
你原来的写法少了<T>所以才会出错
2014-10-18 22:17
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:0 
程序代码:
// Java除了支持泛型类以外,在处理相对简单的问题时,还支持更加简便的泛型方法。
// 即:在普通的类、或者泛型类中,定义一个带有类型参数的方法。
// 示例中的<T>称为类型变量。
// Java中规定,类型变量<T>放在修饰符public static后面,返回类型boolean/void前面。

 
// 泛型方法示例:判断一个对象是否为“负”
public class GenericMethod {

 
    public static void main(String[] args) {
        GenericMethod.<Integer>print(-1); // 调用泛型方法时,在方法名前面的尖括号中指定具体的类型
        print(0); // 在编译器已经有足够信息可以决定类型时,可以使用简写方式,下同
        print(1);
        GenericMethod.<Double>print(-1.0);
        print(0.0);
        print(1.0);
        GenericMethod.<String>print("-1");
        print("0");
        print("1");
        GenericMethod.<Object>print(null);
        print(null);
    }

 
    public static <T> boolean isNegative(T x) {
        boolean returnValue = false;
        try {
            if (x != null && x.toString().trim().length() > 0) {
                if (x.toString().trim().substring(0, 1).equals("-")) {
                    returnValue = true;
                }
            }
        } catch (Exception e) {
            System.out.println(e);
        } finally {
        }
        return returnValue;
    }

 
    public static <T> void print(T x) {
        if (isNegative(x)) {
            System.out.println(x + "\tis     a negative number.");
        } else {
            System.out.println(x + "\tis not a negative number.");
        }
    }
}


注释里面有关于泛型方法的详细说明,下面是程序输出:

程序代码:
-1    is     a negative number.
0    is not a negative number.
1    is not a negative number.
-1.0    is     a negative number.
0.0    is not a negative number.
1.0    is not a negative number.
-1    is     a negative number.
0    is not a negative number.
1    is not a negative number.
null    is not a negative number.
null    is not a negative number.
2014-10-19 09:29
快速回复:静态方法中的泛型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042526 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved