java-通过反射获取目标类的属性,方法,构造器
首先定义一个urse
package com.studay_fanshe;
public class User {
private String uname;
private int age;
private int id;
public User() {
}
public User(String uname, int age, int id) {
this.uname = uname;
this.age = age;
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(){
this.uname="七月";
}
public void setUname(String uname) {
this.uname = uname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
package com.studay_fanshe; import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method; public class test01 {
public static void main(String[] args) throws Exception{ Class clazz = Class.forName("com.studay_fanshe.User");
//获取名字
String name = clazz.getName();//获取包名+类名:com.studay_fanshe.User
System.out.println(name);
String simpleName = clazz.getSimpleName();//获取类名:User
System.out.println(simpleName);
//获取属性
Field[] fields = clazz.getFields();//获取所有的公共的public修饰的属性
System.out.println(fields.length);
Field[] f = clazz.getDeclaredFields();//获取全部的属性包括私有的
for (Field field : f) {
/* private java.lang.String com.studay_fanshe.User.uname
private int com.studay_fanshe.User.age
private int com.studay_fanshe.User.id*/
System.out.println(field);
}
//获取指定属性名的属性:private java.lang.String com.studay_fanshe.User.uname
Field uname = clazz.getDeclaredField("uname");
System.out.println(uname);
//获取方法
Method[] methods = clazz.getMethods();//获取指定类中所有的方法
for (Method method : methods) {
System.out.println("所有的方法:"+method);
}
//获取指定类中公有的方法
Method[] m = clazz.getDeclaredMethods();
for (Method method : m) {
System.out.println("public公有的方法"+method);
}
System.out.println("--------------------------------------------");
/* public void setUname(String uname) {
this.uname = uname;
}*/
//有参数类型必须传入参数类型对应的class对象
Method setUname = clazz.getDeclaredMethod("setUname", String.class);
System.out.println(setUname);
/* public void setUname(){
this.uname="七月";
}*/
//没有参数类型那么参2我们就写null
Method setUname1 = clazz.getDeclaredMethod("setUname", null);
System.out.println(setUname1);
//获得构造器
Constructor[] dc = clazz.getDeclaredConstructors();
for (Constructor constructor : dc) {
System.out.println("构造器:"+constructor);
}
Constructor dec = clazz.getDeclaredConstructor(String.class, int.class, int.class);
System.out.println("指定的构造器:"+dec);
}
}
java-通过反射获取目标类的属性,方法,构造器的更多相关文章
- java 通过反射获取调用类方法及属性
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
- java 通过反射获取和设置对象属性值
public static Object parseDate(Object object){ SimpleDateFormat sdf = new SimpleDateFormat("yyy ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。
首先先说一下类的加载,流程.只有明确了类这个对象的存在才可以更好的理解反射的原因,以及反射的机制. 一. 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三 ...
- Java实现通过反射获取指定类的所有信息
package com.ljy; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...
- java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值
1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...
- java中循环遍历实体类的属性和数据类型以及属性值
package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTarg ...
- java中如何遍历实体类的属性和数据类型以及属性值
package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTa ...
- org.reflections 接口通过反射获取实现类源码研究
org.reflections 接口通过反射获取实现类源码研究 版本 org.reflections reflections 0.9.12 Reflections通过扫描classpath,索引元数据 ...
随机推荐
- 【Perl】perl正则表达式中的元字符、转义字符、量词及匹配方式
Linux平台上被广泛使用的正则表达式库PCRE - Perl-compatible regular expressions,从其名字即可知道,PCRE提供的是一套与Perl中相兼容的正则表达式. 元 ...
- Client使用c#和odp.net连接server oracle
http://blog.csdn.net/educast/article/details/6605655 Oracle.DataAccess.dll有2.X版本和4.X版本,VS2008开发用2.X ...
- 【c++】面向对象程序设计之访问控制与继承
受保护的成员(protected): 1.和私有成员类似,受保护的成员对于类的用户来说是不可访问的 2.和共有成员类似,受保护的成员对于派生类的成员和友元来说是可访问的 3.派生类的友元只能通过派生类 ...
- 负载均衡之基于DNS负载
基于DNS的负载平衡 OK,在了解了负载平衡系统的大致组成及使用方式之后.我们就来看看各种负载解决方式. 当前业界中所最常使用的负载平衡解决方式主要分为三种:基于DNS的负载平衡,L3/4负载平衡,也 ...
- .NET中lock的使用方法及注意事项[转]
标准-->ms官方: http://msdn.microsoft.com/zh-cn/library/c5kehkcz(v=vs.90).aspx A.为什么不要 "lock(this ...
- UVA 10288 - Coupons(概率递推)
UVA 10288 - Coupons option=com_onlinejudge&Itemid=8&page=show_problem&category=482&p ...
- udhcp源码详解(三) 下 之配置信息的读取
上节讲解了read_config函数,读取配置信息到server_config的相应成员变量里,但read_config函数只负责把配置信息重文件里读出来,具体怎么把信息填写到指定的地址内,是调用ke ...
- Matplotlib绘图基础
import matplotlib.pyplot as plt import numpy as np #绘图流程 x=np.linspace(-1,1,100) y=x**2 plt.plot(x,y ...
- SpringMVC_中文乱码的配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)
spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码 <filte ...
- e3 cpu
英特尔® 至强® E3 处理器 https://www.intel.cn/content/www/cn/zh/products/processors/xeon/e3-processors.html?p ...