首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过反射获取List <T>中的包含类型?

在Java中,通过反射获取List中的包含类型可以使用以下方法:

代码语言:java
复制
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

public class ReflectionHelper {
    public static Class<?> getListType(List<?> list) {
        Type superclass = list.getClass().getGenericSuperclass();
        if (superclass instanceof ParameterizedType) {
            ParameterizedType parameterized = (ParameterizedType) superclass;
            Type[] typeArgs = parameterized.getActualTypeArguments();
            if (typeArgs.length > 0) {
                return (Class<?>) typeArgs[0];
            }
        }
        return Object.class;
    }
}

使用示例:

代码语言:java
复制
List<String> stringList = new ArrayList<>();
Class<?> listType = ReflectionHelper.getListType(stringList);
System.out.println("List type: " + listType.getName());

输出:

代码语言:txt
复制
List type: java.lang.String

这个方法使用了Java泛型的反射API,首先获取List的超类型,然后检查是否是一个参数化类型(ParameterizedType),如果是,则获取实际类型参数并返回第一个类型参数对应的类对象。如果不是参数化类型,或者类型参数为空,则返回Object.class作为默认类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java反射通过反射获取结构、invoke方法、获取注解)

方式一步骤: 1)获取类型Class对象 2)调用Class对象newInstance()方法创建对象 方式2:通过获取构造器对象来进行实例化 方式二步骤: 1)通过Class类getDeclaredConstructor...(Class ... parameterTypes)取得本类指定形参类型构造器 2)向构造器形参传递一个对象数组进去,里面包含了构造器中所需各个参数。...> outer = ec.getDeclaringClass(); System.out.println(outer); } 2.7 总 结 了解了反射这么多API,其实在实际操作通过反射获取信息操作代码...调用运行时类指定结构 3.1 调用指定属性 在反射机制,可以直接通过Field类操作类属性,通过Field类提供set()和get()方法就可以完成设置和取得属性内容操作。...体会反射动态性 体会1: public class ReflectionTest { //体会反射动态性:动态创建给定字符串对应对象 public T getInstance

4.3K91

如何通过反射获取属性名字和属性类型

显然我们事先不知道要查哪个表,泛型dao基本要求就是对所有的表都适用,这就需要我们动态获取表名,基本思想可以是方法传入一个类(前提是数据库表和实体类都是一一对应实例,通过反射获取这个实体类属性名和属性类型...,这就用到了java反射这个特性。...反射是java中一个很重要特性,在不知道类中信息时候,利用反射我们可以获取到类中所有的信息,例如属性名,属性类型,方法名,还可以执行类方法,很强大,在框架中大多数也是采用反射获取信息。...以前知识只是知道反射可以破坏单例(因为反射可以获取到类所有信息,构造方法也不例外),但是现实没有哪个程序员写完了单例模式,在用反射来破坏单例吧…… 在说反射前先说一个在反射中很重要类Class...,包括权限修饰符,属性类型,属性名,这里String是java.lang.String,属性名和属性类型后面可以利用字符串截取获得实际想要数据。

3.7K20
  • 如何通过Java反射获取泛型类型信息

    泛型使用场景 在讨论如何用反射获取泛型类型之前,我们先来回顾下,在Java里面什么时候会使用泛型,了解这个问题之后,我们才能继续思考如何用反射获取泛型类型。...但类似第二种场景通过对象指针引用,我们是可以通过反射获取其泛型类型信息,但要注意局部变量是没法获取其泛型信息。...在Java里面可以通过反射获取泛型信息场景有三个,分别是: (1)成员变量泛型 (2)方法参数泛型 (3)方法返回值泛型 注意,通过对象本身也是没法获取。...不能通过发射获取泛型类型信息场景有二个,分别是: (1)类或接口声明泛型信息 (2)局部变量泛型信息 获取方法返回值泛型类型 如下面定义一个测试类: public class MyClass...,通过反射获取参数类型泛型信息其实是非常有用一个功能,比如在一些json工具开源包里面,可以对Java里面泛型各种ListList类型做正确识别,其实就是利用反射这个功能,从而让解析代码具有更强通用型

    9.3K21

    通过PropertyDescriptor反射获取属性 gettersetter 方法

    大家好,又见面了,我是你们朋友全栈君。 Java类私有的(private)属性是获取不到(即使使用继承依然获取不到),那如果非要获取私有属性值怎么办呢?...比如说有些时候接口返回参数是Object范类型,但是实际我们是知道里面的实体类型,这个时候直接进行强制转换即可。...out .println( obj2 .getCustId()); 但如果我们拿到Object不知道可以转成什么类型bean,或者说是从其他系统拿到obeject实体bean,而我们系统不存在这个...getWriteMethod(),获得用于写入属性值方法 注:避免使用拼装方法名,反射获取Method对象。如tId,方法名格式与其他不统一,拼装方法名会错误。...getter方法,反射获取id值 Object str = prop.getReadMethod().invoke(p); // 获取setter方法,反射赋值

    1.5K81

    salesforce零基础学习(八十七)Apex Picklist类型通过Control 字段值获取Dependent List

    字段如何在Apex通过control字段获取到Dependence字段值,针对Salesforce配置来说,我们很好配置出两个Dependence字段关系,通过点击设置一下include关系即可...如下图,我们在Goods__c自定义表中新建了两个Picklist类型字段,并且设置了依赖关系,这个在配置清晰可见,如何在代码获取呢? ?...(此方法已确认失败) salesforce 零基础学习(六十二)获取sObject类型为Picklistfield values(含record type) 写过关于读取中间页面获取含Record...validFor在java返回类型为byte[],因为salesforce没有byte这个基本类型,我们可以通过byte性质,或者直接看byte在java定义,模拟出byteWrapper使用...总结:在Apex Class获取Picklist间级联关系,主要是通过PicklistEntry隐藏属性validFor获取其中关系,并对返回byte[]数组进行解析找到其对应control

    89260

    salesforce零基础学习(八十七)Apex Picklist类型通过Control 字段值获取Dependent List

    字段如何在Apex通过control字段获取到Dependence字段值,针对Salesforce配置来说,我们很好配置出两个Dependence字段关系,通过点击设置一下include关系即可...如下图,我们在Goods__c自定义表中新建了两个Picklist类型字段,并且设置了依赖关系,这个在配置清晰可见,如何在代码获取呢? ?...(此方法已确认失败) salesforce 零基础学习(六十二)获取sObject类型为Picklistfield values(含record type) 写过关于读取中间页面获取含Record...validFor在java返回类型为byte[],因为salesforce没有byte这个基本类型,我们可以通过byte性质,或者直接看byte在java定义,模拟出byteWrapper使用...总结:在Apex Class获取Picklist间级联关系,主要是通过PicklistEntry隐藏属性validFor获取其中关系,并对返回byte[]数组进行解析找到其对应control

    80200

    java通过反射获取加了某个注解所有的类

    一、前言 有时候我们会碰到这样情况: 有n个场景,每个场景都有自己逻辑,即n个处理逻辑, 这时候我们就需要通过某个参数值代表这n个场景,然后去加载每个场景不同bean对象,即不同类,这些类中都有一个同名方法...,但是里面的逻辑不同,类似策略模式、工厂模式等 假设这样场景,银行卡分几种类型,比如普通会员,黄金会员,黑卡会员.........那如何通过反射进行加载呢,BaseDataAnnotationApplication.class package com.zygxsq.test; import com.google.common.collect.Maps...MemberTypeDefinition 注解源表bean loadSourceDefinition(); // 获取SpecialPeople.class里面所有的表名...BaseResult buildData(Class clazz, BaseDataSpec baseDataSpec) throws Exception{ // 获取执行方法名

    31700

    【Android 插件化】Hook 插件化框架 ( 通过反射获取 “宿主“ 应用 Element[] dexElements )

    “插件包“ Element[] dexElements ) 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “宿主“ 应用 Element[] dexElements )...( 通过反射获取 “插件包“ Element[] dexElements ) 介绍了从 " 插件包 " APK 文件获取 Element[] dexElements 流程 , 本篇博客中介绍获取.../dalvik/system/DexPathList.java // 获取 DexPathList pathList 成员变量字节码类型 ( 也可以通过反射获得 ) // 获取是 DexPathList.class...DexPathList pathList 成员变量字节码类型 ( 也可以通过反射获得 ) // 获取是 DexPathList.class Class<?...DexPathList pathList 成员变量字节码类型 ( 也可以通过反射获得 ) // 获取是 DexPathList.class Class<?

    46530

    Jedis 操作 List:Redis列表类型

    Redis列表(List)是一种有序、可重复数据类型,支持在列表两端进行元素插入和删除操作。Jedis作为Java开发者与Redis交互工具,提供了丰富API来操作List类型。...本文将深入介绍Jedis如何操作RedisList类型数据,通过生动代码示例和详细解释,助你轻松掌握JedisList各种操作。 JedisList基本操作 1....获取列表元素 可以使用LRANGE命令获取列表中指定范围元素。...("Merged list: " + newList); 在上述例子,使用lrange方法获取每个列表元素,然后使用lpushx方法将元素合并到新列表。...结语 通过本文介绍,你应该对Jedis操作Redis列表(List各种方法有了深入了解。

    36410

    【Android 插件化】Hook 插件化框架 ( 通过反射获取 “插件包“ Element[] dexElements )

    “插件包“ Element[] dexElements ) ---- 文章目录 Android 插件化系列文章目录 前言 一、通过反射获取 "插件包" Element[] dexElements..., 最终将 " 插件包 " 读取 dexElements 合并到 " 宿主 " 应用 dexElements ; ---- 一、通过反射获取 “插件包” Element[] dexElements..., 通过反射获取插件包 dexElements , 这种类加载是合并类加载 , 将所有的 Dex 文件 , 加入到应用 dex 文件集合 , 可参考 dex 加固 , 热修复 , 插装式插件化.../dalvik/system/DexPathList.java // 获取 DexPathList pathList 成员变量字节码类型 ( 也可以通过反射获得 ) // 获取是 DexPathList.class...DexPathList pathList 成员变量字节码类型 ( 也可以通过反射获得 ) // 获取是 DexPathList.class Class<?

    44710
    领券