我有这样一个方法
public static <T> T newInstance(Class<T> clazz) {
try{
return clazz.newInstance();
}catch(InstantiationException it){
//
}catch(IllegalAccessException ia){
//
}
}但是我这样写 会报错 “This method must return a result of type T”方法名 static <T> T newInstance(Class<T> clazz) 这个不能变 里面的内容
有谁知道 怎么写就可以了?
顺便问一下 “<T> T newInstance” 中的T代表返回类型如同void ,那最前面的那个<T>有是什么意思呢?
谢谢!
public static <T> T newInstance(Class<T> clazz) {
try{
return clazz.newInstance();
}catch(InstantiationException it){
//
}catch(IllegalAccessException ia){
//
}
}但是我这样写 会报错 “This method must return a result of type T”方法名 static <T> T newInstance(Class<T> clazz) 这个不能变 里面的内容
有谁知道 怎么写就可以了?
顺便问一下 “<T> T newInstance” 中的T代表返回类型如同void ,那最前面的那个<T>有是什么意思呢?
谢谢!
throws IllegalAccessException, InstantiationException {
try {
return clazz.newInstance();
} catch (InstantiationException it) {
//
} catch (IllegalAccessException ia) {
//
} finally {
return clazz.newInstance();
}
}
return clazz.newInstance<T>();吧。
public static <T> T newInstance(Class<T> clazz) {
try{
return clazz.newInstance();
}catch(InstantiationException it){
//
}catch(IllegalAccessException ia){
//
}
return null;
}
你能告诉我为什么写int a;怎么不写a int;
public static <T> T newInstance(Class<T> clazz) {
try{
return (T)clazz.newInstance();
}catch(InstantiationException it){
//
}catch(IllegalAccessException ia){
//
}
}这应该是楼主要的答案吧
前面的<T> 就是指声明一个T类型的泛型
后面跟着的那个T才表示返回的类型为T
应该范围一个T类型 加一个强转(T)即可
try {
return (T)clazz.newInstance();
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
}
return null;
}
public static void main(String[] args) {
Class<String> myClass=String.class;
Integer i=GenericTest.newInstance(myClass);
}从Eclipse的提示就可以看到,返回类型已经是String了。