论坛首页 Java企业应用论坛

泛型简单示例

浏览 12586 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-01-28  
public class ObjectCreator {
	public static <T> T creat(Class<T> cls) {
		try {
			return cls.newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		Date d = ObjectCreator.creat(Date.class);
		System.out.println(d);
	}
}
   发表时间:2011-01-28  
你把泛型和反射放在一起做例子,新人看到会无语的。

你能分得清什么是泛型?什么是反射吗?他们俩有什么区别和联系吗?
0 请登录后投票
   发表时间:2011-01-28  
看了代码第一感觉....

这是个反射例子....
0 请登录后投票
   发表时间:2011-01-28   最后修改:2011-01-28
congdepeng 写道
你把泛型和反射放在一起做例子,新人看到会无语的。

你能分得清什么是泛型?什么是反射吗?他们俩有什么区别和联系吗?


LZ这例子确实有点呢个,

讲泛型 如果跟 反射 要沾边,就得 讲到 Erasure 上去
0 请登录后投票
   发表时间:2011-01-28  
但是楼主大大写的确实是泛型的例子呀,都有<T>了
楼主大大是想说XXX.class形式的类字面量的具体类型是Class<T>吧。String.class的类型是Class<String>,Object.class的类型是Class<Object>。所以这种字面量当参数传给例子里的方法,返回的时候就不用手动转型
public class ObjectCreator {
    public static <T> T create(Class<T> cls) {
        try {
            return cls.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        Class<?> clz = Class.forName("java.util.Date");
        Date d = (Date) ObjectCreator.create(clz); // 要手动转型
        System.out.println(d);
    }
}
0 请登录后投票
   发表时间:2011-01-28  
楼主想说的是利用范型方法确定函数返回值的类型的例子。

但是引入了反射的操作,反而会分散注意力。
0 请登录后投票
   发表时间:2011-01-29  
泛型的功用在那裏呀?
0 请登录后投票
   发表时间:2011-01-29  
Java是强类型检查的语言,但是,实际使用中,类型有可能是动态决定的,
比如容器类。

范型的引入更重要是让编译期类型检查能涵盖这方面。
0 请登录后投票
   发表时间:2011-01-29  
对java的泛型方法很无语,非得传入class对象吗?
0 请登录后投票
   发表时间:2011-01-29  
antipro 写道
对java的泛型方法很无语,非得传入class对象吗?


   第一个被误导的初哥就诞生了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics