public class Test06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s=instanceT(String::new);
Date d=instanceT(Date::new);
System.out.println(s); //空字符串
System.out.println(d); //Thu Aug 24 16:06:50 CST 2017
//***************************
String s1=instanceTR(String.class);
Date d1=instanceTR(Date.class);
System.out.println(s1); //空字符串
System.out.println(d1); //Thu Aug 24 16:08:15 CST 2017
}
//利用函数式接口实例化类型变量T,调用者提供一个构造器表达式
public static <T> T instanceT(Supplier<T> constr){
T t=constr.get();
return t;
}
//利用反射实例化类型变量T,调用者提供一个Class对象
public static <T> T instanceTR(Class<T> c){
T t=null;
try {
t=c.newInstance();
} catch (Exception e) {
t=null;
}
return t;
}
}