栏目:Java8基础 作者:admin 日期:2016-08-28 评论:0 点击: 2,834 次
类型可以通过参数来实现,例如泛型中的T t,但是我想生成T对象,那怎么实现呢?按照以往的经验,我们很容易想到这种方式:
1 2 3 4 5 6 7 8 9 |
public class Test<T> { T t; public void create() { t = new T();//编译错误:Cannot instantiate the type T } } |
此时,由于T的具体类型我们无法获得,所以new T()是无法通过编译的。换一种思路,我们不妨使用反射机制,通过T的Class对象的newInstance()方法来获取它的实例,而T的class对象表示为:Class<T>,所以生成T对象的代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class Test<T> { T t; public void create(Class<T> clazz) { try { t = clazz.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } |
------====== 本站公告 ======------
金丝燕网,一个严谨的网站!