首先定义一个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-通过反射获取目标类的属性,方法,构造器的更多相关文章

  1. java 通过反射获取调用类方法及属性

    首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...

  2. java 通过反射获取和设置对象属性值

    public static Object parseDate(Object object){ SimpleDateFormat sdf = new SimpleDateFormat("yyy ...

  3. java利用反射获取类的属性及类型

    java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...

  4. java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。

    首先先说一下类的加载,流程.只有明确了类这个对象的存在才可以更好的理解反射的原因,以及反射的机制. 一.  类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三 ...

  5. Java实现通过反射获取指定类的所有信息

    package com.ljy; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.l ...

  6. java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值

    1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...

  7. java中循环遍历实体类的属性和数据类型以及属性值

    package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTarg ...

  8. java中如何遍历实体类的属性和数据类型以及属性值

      package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTa ...

  9. org.reflections 接口通过反射获取实现类源码研究

    org.reflections 接口通过反射获取实现类源码研究 版本 org.reflections reflections 0.9.12 Reflections通过扫描classpath,索引元数据 ...

随机推荐

  1. 洛谷—— P1462 通往奥格瑞玛的道路

    https://www.luogu.org/problem/show?pid=1462 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主 ...

  2. loj6171/bzoj4899 记忆的轮廊(期望dp+优化)

    题目: https://loj.ac/problem/6171 分析: 设dp[i][j]表示从第i个点出发(正确节点),还可以有j个存档点(在i点使用一个存档机会),走到终点n的期望步数 那么 a[ ...

  3. Eclipse运行Maven命令时出现:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.问题解决

    错误: -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment varia ...

  4. pip命令自动补全功能;设置代理;使用国内源

    这是pip自带的功能 执行的脚本 把脚本写入.zshrc或者profile等里面,执行source立即生效 设置代理: pip --proxy=http://username:password@pro ...

  5. JAVA_the user operation is waiting怎么办

    彻底解决 MyEclipse出现the user operation is waiting的问题   2011-05-31 10:32:30|  分类: 软件编程 |  标签:java  myecli ...

  6. HTML的DIV如何实现水平居中

    内部的DIV必须有下面两行代码即可 text-align:center; margin:0 auto;   在IE6中同样可以

  7. centos中w使用smbclient连接window出现:session setup failed: NT_STATUS_LOGON_FAILURE

    1. 在window中网络->我自己的电脑->能够查看到共享文件,说明window的共享是正常了; 2. 在window中配置共享时,使用的是仅仅同意超级管理员訪问,可是我把超级管理员改名 ...

  8. Windows——cmd findstr 字符串查找增强使用说明

    在文件中寻找字符串. 复制代码代码如下: FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [ ...

  9. AES算法加密java实现

    package cn.itcast.coderUtils; import java.security.Key; import javax.crypto.Cipher; import javax.cry ...

  10. POJ3264Balanced Lineup(最基础的线段树)

    採用一维数组建树. (由于一维数组建的是全然二叉树,时间上比用孩子节点指针建树慢.只是基本能够忽略=-=) #include<iostream> #include<cstdio> ...