设为首页 加入收藏

TOP

java反射机制――解析(一)
2014-11-24 11:59:59 来源: 作者: 【 】 浏览:77
Tags:java 反射 机制 解析
1、java反射机制定义
所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。例如,使用它能获得 Java 类中各成员的名称并显示出来
2、java反射机制的关键类
Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;
class——类对象,
Constructor——类的构造器对象,
Field——类的属性对象,
Method——类的方法对象。通过这四个对象我们可以粗略的看到一个类的各个组 成部分。
3、java反射机制事例
1)class——类对象用 java.lang.Class 类来描述类和接口等。
[ html]
package com.centit.reflect;
import java.lang.reflect.Method;
/**
* @author zjh
*
*/
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
}
public class DumpMethods {
public static void main(String[] args) {
try {
//定义一个Person实例对象
Person man=new Person("测试",30);
//获得一个 Class 对象的方法
[html]
Class manClass=man.getClass();
[html]
//获得一个 Class 对象的方法
Class womanClass=Class.forName("com.centit.reflect.Person");
[html]
//获得一个 Class 对象的方法
Class boyClass=Person.class;
System.out.println(manClass.getName());
System.out.println(womanClass.getName());
System.out.println(boyClass.getName());
} catch (Throwable e) {
System.err.println(e);
}
}
}
输出结果:
[html]
com.centit.reflect.Person
com.centit.reflect.Person
com.centit.reflect.Person
[html]
2)Constructor——类的构造器对象
[html]
[html]
public class DumpMethods {
public static void main(String[] args) {
try {
//定义一个Person实例对象
Person man=new Person("测试",30);
[html]
Class manClass=man.getClass();
//获取构造对象
Constructor manCon[]=manClass.getDeclaredConstructors();
for(int i=0;i
Constructor con=manCon[i];
System.out.println("name========"+con.getName());
System.out.println("decl class========="+con.getDeclaringClass());
Class param[]=con.getParameterTypes();
for(int j=0;j
System.out.println("param------"+param[j]);
}
}
} catch (Throwable e) {
System.err.println(e);
}
}
}
输出结果:
name========com.centit.reflect.Person
decl class=========class com.centit.reflect.Person
param------class java.lang.String
param------int
name========com.centit.reflect.Person
decl class=========class com.centit.reflect.Person
3)Field——类的属性对象
[html]
public class DumpMethods {
public static void main(String[] args) {
try {
//定义一个Person实例对象
Person man=new Person("测试",30);
Class manClass=man.getClass();
Field manField[]=manClass.getDeclaredFields();
for(int i=0;i
Field fie=manField[i];
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇对象容器 - Java对数据结构的封装 下一篇Java5 多线程--CyclicBarrier同步..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)