0 0

通过反射取到List<T>中T的类型10

如题,知道的告诉下,谢谢!
补充一句:list里没有数据的啊!
问题补充
List<t> list = new ArrayList<t>(0);
Method method = list.class.getMethod("get",null);
Class returnTypeClass = method.getReturnType();
returnTypeClass就是返回类型了
问题补充
yujiang 写道
虽说取得范型有关信息是运行期的事情,
但是所有的元数据是在编译期写入的.
所以在编译期不能决定或者不保存的东西在运行期是不可能得到的.

由于Java范型的擦拭法实现,你声明一个List<string>,
编译器不会编译出一个额外的List<string>结构,
对于反射而言这些范型信息等于不存在了.

呵呵 我前提是list不为null,但是无元素
2008年10月20日 23:48

6个答案 按时间排序 按投票排序

0 0

List<T> list = new ArrayList<T>(0); 


我们的jdk是这么做的

 public ArrayList(int initialCapacity) {
	super();
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
	this.elementData = (E[])new Object[initialCapacity];
    }

它会把你的东西固定下来
引用
我前提是list不为null,但是无元素

null只是说你的引用是空的,这个类型没什么关系的
反射也一样,只不过反射的时候不加泛型的话,jdk会把它默认为Object类型

2008年10月21日 10:06
0 0

取不到,根本没办法的,List<T>这个T只在编译器做检查用,编译完了就再没有关于T的信息了,所以,运行期拿不到T

2008年10月20日 23:48
0 0

取不到,根本没办法的,List<T>这个T只在编译器做检查用,编译完了就再没有关于T的信息了,所以,运行期拿不到T

2008年10月20日 23:48
0 0

关注中......

2008年10月20日 23:48
0 0

大概是这样
ParameterizedType pt= (ParameterizedType)toGetMethod.getGenericReturnType();
Class type = (Class)pt.getActualTypeArguments()[0];

看了白衣大人的一个关于springside设计的文章发现的解决办法,
大概和你的思路是差不多的。

2008年10月20日 23:48
0 0

虽说取得范型有关信息是运行期的事情,
但是所有的元数据是在编译期写入的.
所以在编译期不能决定或者不保存的东西在运行期是不可能得到的.

由于Java范型的擦拭法实现,你声明一个List<String>,
编译器不会编译出一个额外的List<String>结构,
对于反射而言这些范型信息等于不存在了.

2008年10月20日 23:48

相关推荐

    c#list添加数据

    标题“c#list&lt;&gt;添加数据”指的是如何向已经实例化的`List&lt;T&gt;`对象中添加数据。描述中提到“list&lt;&gt;.count==0”的情况,即列表为空时,需要向列表中添加数据。下面我们将详细讲解如何操作。 首先,我们来看代码中的`...

    C#将DataTable转化为List&lt;T&gt;

    通过上述过程,我们可以将DataTable中的每一行数据转换为一个T类型的对象,并将这些对象依次添加到List&lt;T&gt;集合中,最终得到一个类型安全且易于操作的强类型集合。 此方法的优点是灵活性高,不需要预先知道DataTable...

    Java泛型的用法及T.class的获取过程解析

    * 集合框架:泛型可以用于集合框架中,例如List&lt;T&gt;、Map&lt;T,U&gt;等。 * DAO设计模式:泛型可以用于DAO设计模式中,例如BaseHibernateEntityDao&lt;T&gt;等。 * 工具类:泛型可以用于工具类中,例如工具类的静态方法可以使用...

    Java实现的分页工具类

    List&lt;T&gt; dataList = new ArrayList&lt;&gt;(); while (rs.next()) { T data = ...; // 反射或者使用ORM框架如MyBatis获取数据对象 dataList.add(data); } // 计算总记录数 Statement countStmt = conn....

    【ASP.NET编程知识】C#将DataTable转化为ListT.docx

    在将T对象添加到List&lt;T&gt;集合中时,需要使用`List&lt;T&gt;.Add()`方法来将T对象添加到集合中。 5. 使用泛型来实现类型安全 在实现将DataTable对象转换为List&lt;T&gt;对象时,使用泛型可以实现类型安全。使用`where T : class,...

    DataGridView点绑定List击列头排序

    = typeof(List&lt;&gt;)) throw new NotSupportedException("数据源不支持排序"); // 获取泛型参数类型 var elementType = listType.GetGenericArguments()[0]; // 创建比较器 var comparer = Comparer[elementType...

    DataTable 和List 相互转换

    在.NET框架中,将`DataTable`转换为`List&lt;T&gt;`通常涉及遍历`DataTable`的每一行,然后创建`T`类型的实例,并将每一列的值映射到相应的属性上。这个过程可以通过反射来实现,但效率较低。然而,随着C# 3.0的引入,LINQ...

    Database_List.zip_databaseList

    完成后,该对象被添加到List&lt;T&gt;中。逆向转换,即从List&lt;T&gt;到DataTable,可以类似地实现,通过创建新的DataTable,然后逐个添加列和行。 这个通用方法的实用价值在于简化了数据操作的复杂性,提高了代码的可读性和可...

    C#列表集合的测试用例

    通过这些测试用例,开发者可以深入理解C#中`List&lt;T&gt;`的使用,以及如何在运行时通过反射访问私有字段,从而提升代码的质量和可维护性。同时,这也有助于开发者更好地掌握C#编程中的一些核心概念和最佳实践。

    java泛型深入.pdf

    extends T&gt;`表示`T`类型或其子类型的`List`,而`List&lt;? super T&gt;`表示`T`类型或其父类型的`List`。 使用泛型时,也要注意一些限制。例如,不能使用基本数据类型,只能使用引用数据类型。也不能实例化泛型类型参数...

    Dataset转对应的实体集合

    给定的代码片段展示了如何实现这一转换,特别是如何将`Dataset`中的`DataTable`转换为一个泛型实体集合`List&lt;T&gt;`。 ### 重要概念:`Dataset`到`List&lt;T&gt;`的转换 #### 1. Dataset和DataTable简介 在.NET框架中,`...

    浅析Java泛型的使用.pdf

    这意味着在运行时,你无法通过反射获取到如List&lt;String&gt;.class这样的泛型类实例。例如,List&lt;Integer&gt;和List&lt;Number&gt;在运行时实际上是相同的类,都变成了List。类型擦除使得泛型在运行时无法直接检测,但编译时的...

    C# List引用类型克隆的3种方法

    前言 有时候我们想克隆一个List去做别的事,而不影响...public static List&lt;T&gt; Clone&lt;T&gt;(this List&lt;T&gt; list) where T : new() { List&lt;T&gt; items = new List&lt;T&gt;(); foreach (var m in list) { var model = new T();

    DataSet 转化为List的通用方法

    通用转换方法的核心在于能够自动识别`DataSet`中`DataTable`的列类型,并将其转换为相应的`List&lt;T&gt;`类型,其中`T`为具体的业务实体类。以下是对代码片段的详细解析: ```csharp public List&lt;T&gt; ChangeDataSet&lt;T&gt;...

    C#读取数据库返回泛型集合详解(DataSetToList)

    本篇文章主要探讨如何在C#中通过使用`DataSet`对象来读取数据库,并将其转换为泛型集合,如`List&lt;T&gt;`。 首先,我们来看一个基本的示例代码,它演示了如何从数据库获取数据并将其绑定到一个`GridView`控件上。`Page_...

    反射在ef中的应用.pdf

    //循环 要修改的属性 名称, 并 反射取出 t 中的 属性对象 for (int index = 0; index &lt; propertyNames.Length;index++ ) { //获取要修改的属性名 string pName = propertyNames[index]; //获取属性对象 ...

    黑马程序员----泛型学习注意点

    不过,对于无参构造函数的类,可以通过类型推断简化实例化,如`List&lt;String&gt; list = new ArrayList&lt;&gt;()`。 11. 类型参数的约束: 可以使用`where`关键字对类型参数添加约束,例如`class Box&lt;T extends Comparable...

    Java泛型编程最全总结

    在这个例子中,`&lt;T&gt;`定义了一个类型参数,方法可以接受任何类型的`List`,并在方法体内操作`T`类型的数据,而无需进行显式类型转换。 Java泛型还有通配符,用于表示对类型的限制。例如,`?`表示任何类型,`? ...

    java反射与泛型综合例子

    泛型方法则在方法签名前声明类型参数,如`public &lt;T&gt; void printList(List&lt;T&gt; list) {...}`。 现在,我们将这两个概念结合在一起,看一个可能的综合例子。假设我们有一个`Pan`类,它是一个泛型容器,可以存放任意...

Global site tag (gtag.js) - Google Analytics