java 反射机制
来源:互联网 发布:mac windows 共享文件 编辑:程序博客网 时间:2024/06/05 15:33
java反射机制就是在运行状态中动态的知道任意一个类的属性和方法,对于任意一个对象能调用它的方法。
这个机制具有的功能有:
能构造任意一个类的对象并且相应的能判断任意一个对象所属的类
能得出任意一个类中的属性和方法
能调用任意一个对象中的方法
动态代理的组成部分
例子:
1.判断对象是否属于反射的类
public class test {
public static void main(String args[]) throws ClassNotFoundException {
Class c = Class.forName("test");
System.out.println(c.isInstance(new String()));
System.out.println(c.isInstance(new test()));
}
}
这就是有一个test类,然后用创建一个test类对象,new一个string和一个test分别去对比,输出为false和true
2.获取任意一个类的所有属性
public class test {
private String name ;
private long password;
public static void main(String args[]) throws Exception {
Class c = Class.forName("test");
getProperty(c);
}
public static Field[] getProperty(Class c) throws Exception {
//获取该类所有属性字段
//Field[] fields = c.getFields();//只获取public访问权限的属性字段(包括父类的)
Field[] fields = c.getDeclaredFields();//只获取该类的所有访问权限的属性(不含父类)
for(int i=0;i<fields.length;i++){
System.out.println("属性:"+fields[i]);
}
return fields;
}
}
输出结果:
属性:private java.lang.String test.name
属性:private long test.password
3.获得对象的特定public属性的值
public static Object getProperty(Object owner,String fieldName) throws Exception {
//得到对象所属类
Class ownerClass = owner.getClass();
//获取该类的某个属性
Field field = ownerClass.getField(fieldName);
//获取某个对象的特定属性
Object property = field.get(owner);
//输出该属性信息
System.out.println(fieldName+"的属性值:"+property.toString());
return property;
}
4.获得对象中的方法,执行对象中的方法
public Method[] getMethods(Class c) throws Exception {
//获取该类所有方法
//Field[] fields = ownerClass.getMethods();//只获取public访问权限的方法(包括父类的)
Method[] methods = c.getDeclaredMethods();//只获取该类的所有访问权限的方法(不含父类)
//输出所有方法
for(int i=0;i<methods.length;i++){
System.out.println("方法:" +methods[i]);
}
return methods;
}
public Object invokeMethod(Object owner,String methodName,Object[] args) throws Exception {
//得到对象所属类
Class ownerClass = owner.getClass();
//获取该类的某个方法
Method method = ownerClass.getMethod(methodName, null);
//执行某个对象的方法
Object result = method.invoke(owner, args);
//输出结果信息
System.out.println("结果返回值:"+ result);
return result;
}
- 【反射】JAVA反射机制
- 【Java】JAVA反射机制
- Java 反射机制[Field反射]
- Java 反射机制[Method反射]
- Java反射机制笔记-反射机制
- java的反射机制
- Java的反射机制
- java反射机制详解!
- Java反射机制
- Java的反射机制
- java 反射机制--侯捷
- java反射机制
- java反射机制
- [候捷]Java反射机制
- java 反射机制
- java 反射机制初探
- 关于Java反射机制
- java反射机制
- boost------ref的使用(Boost程序库完全开发指南)读书笔记
- LeetCode题解:Valid Anagram
- PhpStrom花括号的设置
- power of two
- uvali5697(DP)
- java 反射机制
- 博客搬家至以下地址
- HDU 5375 DP
- BOM基础
- Redis底层数据结构总结
- HtmlParser初探--使用Nodefilter和Visitor进行网页分析
- WindowManager.LayoutParams.type属性
- 黑马程序员——Map集合
- stdafx.h的作用体会