【java高级特性之反射】Field类和Constructor类的使用
2014-10-30 14:24
423 查看
!!!反射就是将Java类中的各个成分映射成为相应的java类。
一.Constructor(构造方法)反射:
利用Constructor来构造对象:
1.获取Constructor的示例对象:
Constructor con=String.class.getConstructor(StringBuffer.class);
2.利用Constructor对象的newInstance方法来创建对象:
con.newInstance(new StringBuffer("abc"));
上述两步等效为:new String(new StringBuffer("abc"));
小知识点:"abc".getClass()==String.class//结果为true;
二.Field(成员变量)字段的反射:
示例代码如下:
package com.oterman.reflect;
import java.lang.reflect.Field;
/**
* 该例子演示Field类的使用;
*/
public class FieldDemo {
public static void main(String[] args) throws Exception {
ReflectPoint pt1=new ReflectPoint(3,5);
Class clazz=pt1.getClass();
Field fieldY=clazz.getField("y");
//fieldY代表的是类的成员的变量,不是对象的成员的值
System.out.println(fieldY.get(pt1));//输出值为5
// Field fieldX=clazz.getField("x");//会报错,因为x是用private来修饰的;
Field fieldX=clazz.getDeclaredField("x");
fieldX.setAccessible(true);
System.out.println(fieldX.get(pt1));//输出值为3
}
}
//用来做反射演示用;
class ReflectPoint{
private int x;
public int y;
public ReflectPoint(int x,int y){
this.x=x;
this.y=y;
}
}
一.Constructor(构造方法)反射:
利用Constructor来构造对象:
1.获取Constructor的示例对象:
Constructor con=String.class.getConstructor(StringBuffer.class);
2.利用Constructor对象的newInstance方法来创建对象:
con.newInstance(new StringBuffer("abc"));
上述两步等效为:new String(new StringBuffer("abc"));
小知识点:"abc".getClass()==String.class//结果为true;
二.Field(成员变量)字段的反射:
示例代码如下:
package com.oterman.reflect;
import java.lang.reflect.Field;
/**
* 该例子演示Field类的使用;
*/
public class FieldDemo {
public static void main(String[] args) throws Exception {
ReflectPoint pt1=new ReflectPoint(3,5);
Class clazz=pt1.getClass();
Field fieldY=clazz.getField("y");
//fieldY代表的是类的成员的变量,不是对象的成员的值
System.out.println(fieldY.get(pt1));//输出值为5
// Field fieldX=clazz.getField("x");//会报错,因为x是用private来修饰的;
Field fieldX=clazz.getDeclaredField("x");
fieldX.setAccessible(true);
System.out.println(fieldX.get(pt1));//输出值为3
}
}
//用来做反射演示用;
class ReflectPoint{
private int x;
public int y;
public ReflectPoint(int x,int y){
this.x=x;
this.y=y;
}
}
相关文章推荐
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
- 使用Java5特性来简化反射编程
- Java高级特性之反射
- 使用Java5特性来简化反射编程
- 使用Java5特性来简化反射编程
- Java的一些高级特性(三)——关于反射
- 使用Java5特性来简化反射编程
- java 高级特性-反射
- 黑马程序员——Java基础---反射Class类、Constructor类、Field类
- 黑马程序员——Java基础---反射Class类、Constructor类、Field类
- Java高级特性之反射(流行框架都用到)
- 【java高级特性之反射】Method方法的反射
- Java的高级特性反射
- Java高级特性之反射机制
- JAVA_高级特性(hashCode,clone,比较器,Class反射,序列化)
- 基础加强____【Java高级特性__反射】
- 使用Java5特性来简化反射编程
- 【java高级特性之反射】创建Class对象的三种方法
- 使用Java5特性来简化反射编程
- java高级特性之反射