- 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在类的声明范围内有效。
- 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