反射2:获取类的方法(通过方法名调用方法),属性,声明
来源:互联网 发布:淘宝冲印照片怎么样 编辑:程序博客网 时间:2024/06/06 17:45
package cn.itcast.jdbc;import java.lang.annotation.Annotation;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import cn.itcast.domain.User;public class ReflectTest { public static void main(String[] args) throws Exception { Class clazz = User.class; Object obj = create(clazz); System.out.println(obj); System.out.println("---------"); invoke1(obj, "showName"); System.out.println("---------"); field(clazz); } // 给定一个类,构造出一个对象。 static Object create(Class clazz) throws Exception { Constructor con = clazz.getConstructor(String.class); // 找到构造器 Object obj = con.newInstance("test name"); // 构造出对象 return obj; } // 通过方法名调用方法 static void invoke1(Object obj, String methodName) throws Exception { Method[] ms = obj.getClass().getMethods(); // 获得实例的方法,包括公有的和私有的,但是没有继承的方法, // ms=obj.getClass().getDeclaredMethods(); //获取实例的公有方法,包括继承的方法,但是没有私有的方法 for (Method m : ms) { // System.out.println(m.getName()); if (methodName.equals(m.getName())) m.invoke(obj, null); // 执行, } Method m = obj.getClass().getMethod(methodName, null); m.invoke(obj, null); } // 获取类的属性 static void field(Class clazz) throws Exception { Field[] fs = clazz.getDeclaredFields(); // 公有的和私有的属性 // fs = clazz.getFields(); //返回公有的属性 for (Field f : fs) System.out.println(f.getName()); } // 获取声明 static void annon(Class clazz) throws Exception { Annotation[] as = clazz.getAnnotations(); }}
User.java
package cn.itcast.domain;import java.util.Date;public class User { private int id; private String name; private Date birthday; private float money; public User() { } public User(String name) { this.name = name; } public User(float money) { this.money = money; } public void showName(){ System.out.println(this.name); } @Override public String toString() { return "id=" + this.id + " name=" + this.name + " birthday=" + this.birthday + " money=" + this.money; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public float getMoney() { return money; } public void setMoney(float money) { this.money = money; }}
0 0
- 反射2:获取类的方法(通过方法名调用方法),属性,声明
- 通过反射获取类属性字段 以及 调用类方法
- java 通过反射获取调用类方法及属性
- java 通过反射获得类的属性和调用方法
- 通过反射获取类的所有属性和方法
- 反射第四步 : 通过反射获取某一个类的 方法 并通过反射调用
- Java反射机制获取/调用类的属性和方法
- 反射获取类属性和方法的调用
- 通过反射获取相关类中的方法声明
- 通过类名反射调用该类的main方法和成员方法
- Java中通过反射获取类的信息(方法名,参数,构造函数等)
- Java反射之获取类的信息(类名,属性,方法,构造函数)
- 通过反射调用方法和操作属性
- 【C#】反射应用-通过方法名调用方法
- 通过反射调用类内部的方法
- 通过反射调用类里面的方法
- JAVA反射获取类名,方法名,属性及构造方法
- JAVA反射获取类名,方法名,属性及构造方法
- IntelliJ IDEA 与 Gradle + Spring项目的初次尝试
- HDU 4565 So Easy!(共轭复数 + 矩阵快速幂 数论)
- QT5 学习之路08---事件的接受与忽略
- 欢迎使用CSDN-markdown编辑器
- <斜率优化><单调队列>——1.【APIO2010】特别行动队
- 反射2:获取类的方法(通过方法名调用方法),属性,声明
- hibernate映射关系一对一映射
- 2015弱校联盟(2) - J. Usoperanto
- Java finished with non-zero exit value 2 - Android Gradle
- 前端学习首页
- eCharts使用图表简单示例
- pat1013Battle Over Cities (25)
- 使用AudioRecord录制语音
- LeetCode题解:Construct Binary Tree from Preorder and Inorder Traversal