`
tianlihu
  • 浏览: 314060 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Java 反射 获取范型中的参数

阅读更多
近日,需要用Annotation(注解)来实现对象的数据Copy。但是有些字段是List或Map,这时就到取到List或Map的范型参数。查找一下JDK类,果真能取出来,记录如下:

1. 模型类
public class Model {

	private List<String> list;

	public List<String> getList() {
		return list;
	}

	public void setList(List<String> list) {
		this.list = list;
	}
}


2. 解析类
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class ModelParser {

	public static void main(String[] args) throws Throwable {
		Field field = Model.class.getDeclaredField("list");
		Type type = ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];
		System.out.println(type);
		System.out.println(type == String.class);
	}
}


结果是:
class java.lang.String
true
0
0
分享到:
评论

相关推荐

    Java 范型Java 范型.doc

    Java 范型Java 范型

    Java如何获取泛型类型

    Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现的接口获取泛型参数 定义一个泛型父类: public interface SuperClass { String ...

    Java程序设计范型和枚举PPT教案学习.pptx

    在Java中,范型也被称为参数化类型。例如,`HashMap, Value&gt;`就是一个范型类,其中`Key`和`Value`是类型参数,代表了存储的数据的键和值的类型。在创建`HashMap`实例时,我们可以指定具体的类型,如`HashMap, ...

    Java 范型攻略篇

    在早期版本的Java中,如Java 1.4及以前,集合框架(如`ArrayList`)只能存储`Object`类型的数据,这导致了类型信息在编译期的丢失,进而引发运行时的类型转换异常(`ClassCastException`)。为了解决这一问题,Java...

    java 带两个类型参数的泛型

    在Java中,我们使用尖括号 `&lt;T&gt;` 来声明类型参数,其中`T`可以是任何字母,代表“类型”。 当涉及到带有两个类型参数的泛型时,语法会稍微复杂一些。例如,我们可以创建一个表示键值对的数据结构,如下所示: ```...

    Java使用反射来获取泛型信息示例

    在Java中,获取泛型信息是非常重要的,特别是在反射机制中。通过反射,我们可以获取类中的字段、方法和构造函数等信息,但是如果字段的类型是泛型的,例如Map, Integer&gt;,那么使用普通的反射机制无法获取到泛型参数...

    JAVA范型指南中文版

    - **类型擦除**:Java泛型在编译后会进行类型擦除,实际生成的字节码中不会包含类型参数。这意味着在运行时,泛型对象实际上是无类型的,但编译时的类型检查仍然有效。 3. **泛型通配符** - **无界通配符**:`?`...

    java 泛型类的类型识别示例

    本示例将探讨如何在Java中实现泛型类的类型识别。 首先,我们来理解什么是类型识别(Runtime Type Information, RTTI)。在Java中,RTTI允许我们在程序运行时检查和操作对象的实际类型,这是通过使用`instanceof`...

    C++多范型设计

    《C++多范型设计》是一本深入探讨C++编程语言中模板技术的专著,由知名软件工程师James O. Coplien撰写,并由鄢爱兰、周辉等翻译成中文版,ISBN号为9787508318240。这本书的核心主题是C++中的泛型编程,它是C++编程...

    用Java Socket实现一个简单的基于P2P范型的即时聊天系统。

    首先,我们需要了解Java中的Socket API。Socket是网络通信的基础,它提供了在网络中两台计算机之间建立连接并进行数据交换的能力。在Java中,`java.net.Socket`和`java.net.ServerSocket`类是实现这一功能的核心。`...

    jdk1.5中的范型

    ### JDK 1.5 中的范型 #### 引言 自 JDK 1.5 开始,Java 语言正式引入了一项重要的特性——泛型(Generics),这使得 Java 成为了一个更为强大且灵活的语言。泛型允许开发人员编写出类型安全的通用类或方法,从而...

    looly#hutool-site#泛型类型工具-TypeUtil1

    介绍获取方法的参数和返回值类型(包括Type和Class)获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型)方法首先我们定义一个类:public cla

    范型程序设计与 STL.pdf

    《范型程序设计与 STL》是一本深入探讨C++编程中的关键概念和技术的书籍,主要聚焦于范型(Generic Programming)和标准模板库(Standard Template Library,简称STL)。范型编程是一种强大的软件开发方法,它允许...

    java范型[参考].pdf

    在泛型引入之前,Java集合框架中的类如`List`,`Set`和`Map`都是基于`Object`类型的,这意味着它们可以存储任何类型的对象。然而,这带来了类型安全问题和大量的类型转换工作。例如,当我们使用`List.add(Object)`...

    一个很好的范型立例题

    - Java范型在编译后会进行类型擦除,实际运行时并不保留类型参数信息,因此在运行时无法通过反射获取泛型类型。 - 擦除后,泛型类的实例将退化为无参数类型,但编译器会检查类型安全。 4. 泛型与多态 - 泛型与...

    范型参考 (1).java

    范型参考 (1).java

    范型参考 (2).java

    范型参考 (2).java

    Java 实现泛型List

    Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。

    论文研究-消息传递范型与C/S范型双范型的主数据管理机制 .pdf

    消息传递范型是计算机科学中的一个基本概念,用于描述进程间通信的方式。在这范型中,数据通过消息形式在发送者(sender)和接收者(receiver)之间进行交换。消息传递机制的优点在于它的异步性质,能够支持分布式...

Global site tag (gtag.js) - Google Analytics