- 浏览: 80306 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
一辈子的咲子推:
其实很多学生考试不及格未必就是不学习,太多学生把大学几年时间全 ...
真的不想监考 -
jackroomage:
看错了,你写的没有问题。sorry!!!
Java Web实践专题——访问路径问题 -
jackroomage:
<a href="./../bb/b_a.js ...
Java Web实践专题——访问路径问题
Java中提供了Class类,可以通过Class类获取类的定义信息,包括包名、类名、类上的注释(Annotation)、类的修饰符、父类、继承的接口、构造方法、成员变量和成员方法。这些信息分别使用java.lang.annotation.Annotation、 java.lang.reflect.Constructor、java.lang.reflect.Field、java.lang.reflect.Method、java.lang.reflect.Modifier来表示。可以动态调用方法和属性。下面的例子展示了基本用法。
package ch5;
import static java.lang.System.out;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class ClassInfo {
public static void main(String args[]){
Class c=String.class;
// 1、得到所有方法
Method[] methods = c.getMethods();
// 2、得到某个方法
try{
// 第一个参数是方法的名字,后面的参数是参数的类型
Method find = c.getMethod("indexOf", int.class);
// 动态调用,第一个参数是对象,后面的参数是方法的实参(采用了变长参数)
System.out.println(find.invoke("hello,welcome!",'c'));
}catch(Exception e){
e.printStackTrace();
}
// 3、得到类的名字
out.println("类的名字为:"+c.getName());
// 4、得到包名,通过Package对象处理
System.out.println("包名为:"+c.getPackage().getName());
// 5、得到修饰符,通过Modifier处理
int modifier = c.getModifiers();
if(Modifier.isPublic(modifier)){
System.out.println("类是公有的!");
}
if(Modifier.isPrivate(modifier)){
System.out.println("类是私有的!");
}
if(Modifier.isFinal(modifier)){
System.out.println("类是最终类!");
}
// 6、得到父类
System.out.println("父类的名字为:"+c.getSuperclass().getName());
// 7、得到实现的接口
System.out.println("实现的接口:");
for(Class cc:c.getInterfaces()){
System.out.print(cc.getName()+",");
}
// 8、得到类上的注释
System.out.println("类上的注释:");
for(Annotation a:c.getAnnotations()){
System.out.print(a.toString());
}
// 9、得到构造方法
System.out.println("构造方法有:");
for(Constructor constructor:c.getConstructors()){
System.out.print(constructor.toString());
}
// 10、创建实例
try{
Object o = c.newInstance();
}catch(Exception e){
e.printStackTrace();
}
// 11、解析方法
for(Method method:methods){
System.out.print("方法名字:"+method.getName());
System.out.print("方法参数列表:");
for(int i=0;i<method.getParameterTypes().length;i++)
System.out.print(method.getParameterTypes()[i].getName()+",");
System.out.print("方法的异常列表:"+method.getExceptionTypes());
System.out.print("方法的返回值类型:"+method.getReturnType());
if(Modifier.isPublic(method.getModifiers())){
System.out.print("方法是公有的");
}
if(Modifier.isStatic(method.getModifiers())){
System.out.print("方法是静态的");
}
System.out.println("方法的修饰符:"+method.getModifiers());
/*
* 返回的修饰符是一个数字,是对多个修饰符的编码,可以通过Modifier来判断是否是包含某个修饰符
* 例如:Modifier.isPublic(method.getModifiers())判断是否包含public修饰符
*/
}
// 12、解析属性
Field[] filds = c.getFields();
for(Field fild:filds){
// 得到属性名字
System.out.print(fild.getName());
// 动态获取属性值
try{
System.out.print("--------"+fild.get("hello,welcome!").toString());
}catch(Exception e){
System.out.println("不能访问!");
}
}
}
}
李绪成 CSDN Blog:http://blog.csdn.net/javaeeteacher
CSDN学生大本营:http://student.csdn.net/space.php?uid=124362
如果喜欢我的文章,就加我为好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5
发表评论
-
String与StringBuffer
2007-03-16 13:44 5221、String类 String是比较特殊的数据类型,它不属 ... -
HashSet类的用法
2007-03-19 14:54 535HashSet是实现Set接口的一个类,具有以下的特点: ... -
Hashtable类的用法
2007-03-19 14:56 476实现了Map接口,是同步的哈希表,不允许类型为null的键名和 ... -
Math类的常用方法
2007-03-19 14:57 583封装了一些基本运算方法,包括进行三角运算的正弦、余弦、正切、余 ... -
Vector类的用法
2007-03-19 14:59 448Vector类实现了AbstractList。Vector相当 ... -
迭代器Iterator的用法
2007-03-19 15:04 524迭代器Iterator的用法 和枚举一样,表示一些对象的集 ... -
异常处理
2007-03-19 15:08 546异常处理 认识异常 首先看下面的代码: class ... -
面向对象的实现
2007-03-19 15:09 464面向对象的实现 对象之间存在的关系如下: 继承关系 继承 ... -
日期及其格式化
2007-03-19 15:10 513日期及其格式化 1、java.util.Date类 用于表 ... -
数字的格式化
2007-03-19 15:12 508数字的格式化 在很多情况下需要对输出的信息进行格式化,尤其是 ... -
HashMap对象的遍历
2007-05-31 13:52 586假设map是HashMap的对象,对map进行遍历可以使用下 ... -
Java代码编写规范
2007-09-28 16:50 626原文出处:http://java.sun.com/docs/c ... -
NullPointerException异常
2009-06-20 19:36 561顾名思义,NullPointerException是空指针异常 ... -
java.lang.ClassCastException
2009-06-25 16:54 552ClassCastException,从字面上看,是类型转换错 ... -
Java中成员变量和属性之间的关系
2009-07-01 08:20 852有人可能遇到这样的错 ... -
java.lang.ArrayIndexOutOfBoundsException异常分析及解决
2009-08-26 10:52 845这是一个非常常见的异常,从名字上看是数组下标越界错误,解决方法 ... -
java.lang.UnsupportedClassVersionError错误的原因及解决方案
2009-09-07 13:04 585错误提示如下: java.lang.UnsupportedC ... -
谈谈强制类型转换
2009-11-18 13:12 513强制类型转换在Java中 ... -
Java注释(Annotation)
2010-05-26 16:10 528Java5中提供了新的注释(Annotation),能够为 ... -
Java中使用ResourceBundle访问资源文件(properties文件)
2010-05-27 12:45 512在程序中经常需要使用常量,如果直接写在程序里,改变这些字符串时 ...
相关推荐
java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...
java 反射机制深入理解,java 反射机制深入理解,java 反射机制深入理解,
java反射机制和动态代理的原理,熟悉反射机制和动态代理
Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了
Java反射机制的实现_Reflection,适合学习了解反射机制。
一个例子8个demo让你了解Java反射机制
java反射机制的一些源代码,我学习的笔记,需要的可以下载看看
描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。
Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制
java反射机制核心代码,小弟一直弄不明白,怎么通过反射来调用私有成员方法,看了这个后,你可以随心调用private方法,和属性,记得添加setAccessable(true),哦,要不还是不行,如:method.setAccessable(true);
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
Java反射机制总结(实例分析) Java反射机制学习笔记
候捷谈Java反射机制 有助深入理解Java新特性
深入了解java反射机制的原理,通过反射机制可以破坏单例模式,如何防止通过反射机制拿到单例模式的构造器呢?用枚举类可破
java反射机制,代码/..安逸.不要错过
自己总结的java反射机制的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者
java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
java反射机制源码java反射机制源码java反射机制源码