- 浏览: 269541 次
- 性别:
- 来自: 新乡
文章分类
- 全部博客 (227)
- servciemix (10)
- db (18)
- javaTools (4)
- hibernate (31)
- web (3)
- spring (14)
- design pattern (4)
- java security (3)
- portal (1)
- ejb (6)
- session (2)
- java_lang (21)
- jbpm (29)
- struts (7)
- orgRights (2)
- project manager Jira (7)
- 跨库事务 (2)
- mysql (14)
- ubuntu (7)
- osgi (9)
- maven ant make (4)
- 分布式 高并发 高性能 (5)
- virgo-dm_server (0)
- osgi web (3)
- platform (1)
- smooks (1)
- business (1)
- 职场生涯 (14)
- Java编码格式 (2)
- web服务 (1)
- 计算机使用 (1)
- 健康工作生活的保障,工作中务必抛掉的不良心态 (4)
- 电信-网络监控 (1)
- 多线程-multithread (1)
- 海量数据-高性能 (2)
- Mybatis (1)
- web开发平台研发 (0)
- oracle (0)
- 应用服务器调优 (0)
- web前端 (0)
- servlet-jsp (0)
- tomcat (2)
- newtouch (1)
- portal_liferay (2)
- version control (1)
- apm-impact (2)
- tools (1)
- 研发管理 (1)
- 电商业务 (1)
- 生鲜电商市场调查 (0)
- PBX (0)
- 房东 (0)
最新评论
-
lifuchao:
...
权限问题 -
Branding:
谢谢,受教了,另外,CONN AS SYSDBA,必须是在操作 ...
Oracle密码忘记了怎么办? -
zhuchao_ko:
...
Portal实现原理 -
败类斯文:
不知道改哪里。。。木有见到红色。。表示悟性低了、、
jira error: Neither the JAVA_HOME nor the JRE_HOME environment variable is defin -
c__06:
正文:假如事务我是这样定义的: <tx:method n ...
Spring中Transactional配置
利用反射取得泛型信息
一、传统通过反射取得函数的参数和返回值
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
import java.util.Set;
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
public class Foo {
public static void main(String[] args) throws Exception {
Method[] methods = Foo. class .getDeclaredMethods();
for (Method method : methods) {
Class[] paramTypeList = method.getParameterTypes();
Class returnType = method.getReturnType();
System.out.println(returnType);
for (Class clazz:paramTypeList) {
System.out.println(clazz);
}
System.out.println();
}
}
public static String test1(String str) {
return null ;
}
public static Integer test2(String str,Integer i) {
return null ;
}
}
二、在有泛型的时候,取得参数和返回值的集合类的泛型信息
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
import java.util.Set;
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
public class Foo {
public static void main(String[] args) throws Exception {
Method[] methods = Foo. class .getDeclaredMethods();
for (Method method : methods) {
System.out.println( " returnType: " );
Type returnType = method.getGenericReturnType();
if (returnType instanceof ParameterizedType) {
Type[] types = ((ParameterizedType)returnType).getActualTypeArguments();
for (Type type:types) {
System.out.println(type);
}
}
System.out.println( " paramTypeType: " );
Type[] paramTypeList = method.getGenericParameterTypes();
for (Type paramType : paramTypeList) {
if (paramType instanceof ParameterizedType) {
Type[] types = ((ParameterizedType)paramType).getActualTypeArguments();
for (Type type:types) {
System.out.println(type);
}
}
}
}
}
public static List < String > test3(List < Integer > list) {
return null ;
}
private static Map < String, Double > test4(Map < String, Object > map) {
return null ;
}
}
三、应用环境
例如你要写一个程序,需求把一个如下的配置文件变成一个集合类。
< config name = " Foo.DoubleBean " >
< element key = " key1 " value = " 1.1 " />
< element key = " key2 " value = " 2.2 " />
< element key = " key3 " value = " 3.3 " />
</ config >
根据用户的参数变成不同的集合类 Map<String.String> Map<String,Double> Map<String,Float>
如果你要着手开发一个框架,这样的需求会比较常见。这个时候取到setXX()函数的参数,就可以对应上边的问题了。
一、传统通过反射取得函数的参数和返回值
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
import java.util.Set;
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
public class Foo {
public static void main(String[] args) throws Exception {
Method[] methods = Foo. class .getDeclaredMethods();
for (Method method : methods) {
Class[] paramTypeList = method.getParameterTypes();
Class returnType = method.getReturnType();
System.out.println(returnType);
for (Class clazz:paramTypeList) {
System.out.println(clazz);
}
System.out.println();
}
}
public static String test1(String str) {
return null ;
}
public static Integer test2(String str,Integer i) {
return null ;
}
}
二、在有泛型的时候,取得参数和返回值的集合类的泛型信息
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Map;
import java.util.List;
import java.util.Set;
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
public class Foo {
public static void main(String[] args) throws Exception {
Method[] methods = Foo. class .getDeclaredMethods();
for (Method method : methods) {
System.out.println( " returnType: " );
Type returnType = method.getGenericReturnType();
if (returnType instanceof ParameterizedType) {
Type[] types = ((ParameterizedType)returnType).getActualTypeArguments();
for (Type type:types) {
System.out.println(type);
}
}
System.out.println( " paramTypeType: " );
Type[] paramTypeList = method.getGenericParameterTypes();
for (Type paramType : paramTypeList) {
if (paramType instanceof ParameterizedType) {
Type[] types = ((ParameterizedType)paramType).getActualTypeArguments();
for (Type type:types) {
System.out.println(type);
}
}
}
}
}
public static List < String > test3(List < Integer > list) {
return null ;
}
private static Map < String, Double > test4(Map < String, Object > map) {
return null ;
}
}
三、应用环境
例如你要写一个程序,需求把一个如下的配置文件变成一个集合类。
< config name = " Foo.DoubleBean " >
< element key = " key1 " value = " 1.1 " />
< element key = " key2 " value = " 2.2 " />
< element key = " key3 " value = " 3.3 " />
</ config >
根据用户的参数变成不同的集合类 Map<String.String> Map<String,Double> Map<String,Float>
如果你要着手开发一个框架,这样的需求会比较常见。这个时候取到setXX()函数的参数,就可以对应上边的问题了。
发表评论
-
Java程序员常用工具集
2012-05-23 14:30 985我发现很多人没办 ... -
基于JDBC的数据库连接池技术研究与设计
2011-12-16 14:34 773基于JDBC的数据库连接池技术研究与设计 摘 要 本文 ... -
关于jvm的设置
2011-12-16 10:38 1495一、Java heap space (一 ... -
JVM内存管理深入Java内存区域与OOM
2011-12-15 16:47 908JVM内存管理深入Java内存 ... -
JVM内存管理深入垃圾收集器与内存分配策略
2011-12-15 16:45 1135JVM内存管理深入垃圾收 ... -
jdbc 连接池小结
2011-12-15 16:43 893java基础面试题 主题:[我的工具箱] jXLS ... -
JVM参数调优
2011-12-15 14:35 817JVM参数调优是个很头痛 ... -
Java对象和JSON互转换利器-Gson
2011-11-04 17:22 1858Java对象和JSON互转换利器-Gson . 2008-07 ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-10-26 17:52 812java.lang.OutOfMemoryError: Per ... -
java.sql.Date,java.sql.Time和java.sql.Timestamp
2011-09-06 14:11 1123java.sql.Date,java.sql.Time和jav ... -
java 编码
2011-07-21 19:13 1259w.write(new String("中文网&qu ... -
对泛型进行反射
2011-05-05 19:06 1222对泛型进行反射 今天在用反射的时候突然想到,之前从来没有对泛 ... -
Java反射经典实例 Java Reflection Cookbook
2011-05-05 19:05 770Java反射经典实例 Java Reflection Cook ... -
java 反射机制详解
2011-05-05 19:04 708java 反射机制详解 Java 的反射机制是使其具有动态特性 ... -
一次Java垃圾收集调优实战
2011-05-05 19:03 757一次Java垃圾收集调优实战 1 资料 * JDK5 ... -
利用反射和泛型让JDBC编程方便点
2011-05-05 19:02 831利用反射和泛型让JDBC编程方便点 一直以来使用JDBC编 ... -
深入剖析JAVA反射机制强大功能
2011-04-08 20:47 883* 深入剖 ... -
关于Java反射机制的一个实例
2011-04-08 20:46 836* 关于Java反射机制的一个实例 ... -
Java虚拟机内部构成浅析
2011-04-08 20:44 796* Java虚拟 ... -
详解reflect Java的反射机制
2011-04-08 20:42 531* 详解refle ...
相关推荐
在Java基础入门四泛型、反射、注解的学习中,我们会了解到如何正确使用泛型来创建更加健壮的代码,如何利用反射机制实现类和对象的动态操作,以及如何利用注解来简化开发过程和提高代码的可读性。 此外,文档中提到...
2. **通过反射取得并修改数组的信息**:例如获取数组长度或更改数组元素的值。 3. **通过反射机制修改数组的大小**:虽然Java数组的大小是固定的,但可以通过反射改变数组引用指向另一个数组来间接实现。 4. **将...
对于`Java反射机制的深入研究笔记.pdf`,这部分内容可能涉及更高级的反射操作,比如动态调用方法(`invoke()`方法)、修改私有成员变量、处理泛型信息、以及异常处理等。同时,它可能也会讲解反射与性能的影响,以及...
反射利用元数据动态地创建对象、调用方法等,增强了代码的灵活性。 7. **反射**:反射是.NET中的一个强大工具,可以动态地获取和操作程序集、类型、成员等信息。它可以用于动态加载类、创建对象、调用方法,是实现...
元数据提供了关于程序集、类型和成员的信息,反射则允许在运行时动态地获取和操作这些信息,自定义属性则可以为代码添加额外的元信息。 在实际开发中,理解这些高级技术能够帮助开发者解决复杂问题,提高代码质量,...
7. **反射机制**:运行时动态加载类、获取类信息、创建对象等。 8. **泛型**:理解泛型的概念,使用泛型类和泛型方法。 9. **JavaSE API**:熟悉并能熟练运用Java标准库提供的各种类和方法。 10. **设计模式**:了解...
8. **反射**:反射的原理和应用,如何在运行时获取类的信息并动态调用方法。 9. **枚举与注解**:枚举类型的特点和使用,注解的定义和使用场景。 10. **JVM与编译过程**:了解Java虚拟机的工作原理,以及源代码到...
- **注解(Annotation)**:了解注解的定义,元注解,以及如何使用反射获取注解信息。 每一套试题都将综合这些知识点,通过解答,考生不仅能检验自己的Java编程能力,还能发现知识盲区,有针对性地进行复习。因此...
7. **反射**:反射机制允许程序在运行时动态地获取类的信息并调用其方法,这是Java的一个强大特性,考试可能会涉及Class类、Constructor、Method和Field的使用。 8. **Java内存管理**:理解垃圾收集(Garbage ...
这涵盖了多线程、网络编程、IO流、反射、注解、泛型、集合框架、异常处理、设计模式等多个核心主题。在Java的世界里,高级编程意味着理解并能够熟练运用这些复杂但强大的工具和技术,以提升代码的效率、可维护性和可...
在实现过程中,Wiz框架充分利用了Java的反射机制和泛型,确保了类型安全。它允许开发者通过对象操作来生成SQL,例如,可以通过对象属性来设置WHERE子句的条件,通过对象方法来执行CRUD(创建、读取、更新、删除)...
9. **反射**:学习如何在运行时动态获取类的信息,创建对象,调用方法,以及修改私有属性。 10. **泛型**:理解泛型的引入,如何在类、接口、方法中使用泛型,以及通配符的使用。 11. **枚举与注解**:掌握枚举...
8. **反射**:理解反射机制,知道如何在运行时动态获取类的信息并调用其方法。 9. **泛型**:测试你对泛型的理解,包括其作用、限制和如何提高代码的类型安全。 10. **JVM**:理解Java虚拟机的工作原理,包括类...
- **元数据与反射**:探索.NET框架的元数据系统,学习如何使用反射动态地访问和操作程序集、类型和成员。 4. **LINQ(Language Integrated Query)** - **查询表达式**:学习使用查询表达式语法进行数据库、集合...
还有,增强了反射机制,提供了对泛型类型信息的访问,使得动态编程更具灵活性。 再者,Java 1.6在Swing和AWT图形用户界面库上也有所增强。新的LookAndFeel设计,如Nimbus,提供了更现代的界面风格。同时,增加了对...
14. **反射机制**:利用反射可以在运行时动态地获取类的信息并操作类的对象,增强程序的灵活性。 15. **JVM原理**:理解Java虚拟机的工作机制,包括类加载、垃圾回收、内存管理等。 最后,提供的"java入门基础.pdf...
- **动态代理**:利用反射实现动态代理,可以在运行时创建代理类,用于拦截方法调用。 8. **Java标准库** - **JDBC**:Java数据库连接,用于与各种数据库进行交互。 - **网络编程**:Socket和ServerSocket类提供...
- **反射机制**:通过Class类获取对象的类信息,并通过反射创建对象、调用方法等高级操作。 - **泛型**:了解如何使用泛型来提高代码的重用性和类型安全性。 - **注解**:注解的定义及其用途,例如元注解、自定义...
8. **反射与注解**:反射允许程序在运行时检查类、接口、字段和方法的信息,而注解则提供了一种元数据的方式,可以用来在编译时或运行时处理代码。 9. **Java标准库**:Java SE(标准版)提供了大量的内置库,如...
9. **反射**:反射允许在运行时检查和使用程序集、类型、方法等信息,是实现动态代码执行的重要工具。 10. **泛型**:泛型提供了一种方式来创建类型安全且可重用的数据结构和方法,避免了类型转换的开销。 11. **...