JAVA泛型类和泛型方法
2013-10-02 21:38
387 查看
class A<T> {
public List<T> getValues2(Class<T> c) throws Exception{
List<T> values = new ArrayList<T>();
T o= c.newInstance();
values.add(o);
return values;
}
}
上面这种是“generics class”,即针对类的泛型声明,泛型参数T在类的声明范围内有效。
Java代码
public <T>List<T> getValues(Class<T> c) throws Exception{
List<T> values = new ArrayList<T>();
T o= c.newInstance();
values.add(o);
return values;
}
而这种是“generics method”,即泛型方法,“<T>List<T>”是可以中间分开的,写出“<T> List<T>”,这样会更清楚,这个参数T则在此方法声明范围内有效。
所以,对于泛型类中,如果没有了参数T,那么里面的方法却包含T,就会出现编译期的错误: T cannot be resolved to a type
public List<T> getValues2(Class<T> c) throws Exception{
List<T> values = new ArrayList<T>();
T o= c.newInstance();
values.add(o);
return values;
}
}
上面这种是“generics class”,即针对类的泛型声明,泛型参数T在类的声明范围内有效。
Java代码
public <T>List<T> getValues(Class<T> c) throws Exception{
List<T> values = new ArrayList<T>();
T o= c.newInstance();
values.add(o);
return values;
}
而这种是“generics method”,即泛型方法,“<T>List<T>”是可以中间分开的,写出“<T> List<T>”,这样会更清楚,这个参数T则在此方法声明范围内有效。
所以,对于泛型类中,如果没有了参数T,那么里面的方法却包含T,就会出现编译期的错误: T cannot be resolved to a type
相关文章推荐
- Java语法基础
- Java工具类之Pattern和Matcher(一)
- Java垃圾收集--对象的finalize()方法
- Java工具类之System(一)
- Java工具类之Arrays(一)
- Java多线程之CountDownLatch(一)
- Java多线程之syncronized(二)
- java 操作 Excel POI
- Java多线程之Thread(一)
- Java多线程之线程池(五)
- Java多线程之Condition(一)
- 线性表的链接存储结构及JAVA实现
- JavaSE初学(三)——面向对象2
- Java多线程之CyclicBarrier(一)
- Java多线程之Exchanger(一)
- [转载]堆排序(HeapSort) Java实现
- Java多线程之Callable接口(一)
- 快速排序
- 二叉树相关问题
- java 20008年月历输出 日期的个位与星期数相等 的日子