当前位置:编程学习 > JAVA >>

反射+泛型问题

我想创建List<T> l = new List<T>();
只有在new的时候才知道T的类型. --------------------编程问答-------------------- 你这想法和反射基本没啥子关系啊。。。没有反射能操作你的局部变量。。。类的泛型字段的泛型可以通过反射得到。 --------------------编程问答-------------------- 你想说啥。。  而且这个LIST不是java.util.list吧。 不然还不能实例化。。 --------------------编程问答-------------------- List<T> l = new ArrayList<T>();

或者

List<T> l = new LinkedList<T>(); --------------------编程问答-------------------- 啥子意思,木有搞懂。。。 --------------------编程问答-------------------- List<T> list = new ArrayList<T>(); --------------------编程问答-------------------- Java的泛型基本就是弱智的产物。。。 --------------------编程问答--------------------
引用 3 楼 trocp 的回复:
List<T> l = new ArrayList<T>();

或者

List<T> l = new LinkedList<T>();

我想说的是,T这个类型并非是写死的,而是动态产生. --------------------编程问答--------------------
引用 4 楼 hucp2007 的回复:
啥子意思,木有搞懂。。。

List<T> l = new List<T>();这里面T的类型只有在运行的时候才能够确定,可能是int,string或者自己定义的类 --------------------编程问答-------------------- 泛型是1.5之后才有的,以前没有泛型的时候,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,你转换的时候对实际参数的类型是要知道的。如果你写错了类型,编译器一般不提示错误,等运行时候才会出错。
泛型的出现,就是你编译的时候就提示你出错。

理解Java泛型最简单的方法是把它看成一种便捷语法,能节省你某些Java类型转换上的操作:

List<Apple> box = ...;
Apple apple = box.get(0);

上面的代码自身已表达的很清楚:box是一个装有Apple对象的List。get方法返回一个Apple对象实例,这个过程不需要进行类型转换。没有泛型,上面的代码需要写成这样:

List box = ...;
Apple apple = (Apple) box.get(0);

很明显,泛型的主要好处就是让编译器保留参数的类型信息,执行类型检查,执行类型转换操作:编译器保证了这些类型转换的绝对无误。 --------------------编程问答-------------------- 用通配符?来表示未知类型。如List<?>就声明了List中包含的元素类型是未知的。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- List<?> l = new ArrayList<?>(); --------------------编程问答-------------------- package test;

import java.util.ArrayList;
import java.util.List;

public class JVMTest<T> {

/**
 * @param args
 */

   public  List<T> test(String className) throws InstantiationException, IllegalAccessException, ClassNotFoundException{
   List<T> l = new ArrayList<T>(); 
return l;

   }
}

补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,