首先定义一个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. ATcoder 1983 BBQ Hard

    E - BBQ Hard Time limit : 2sec / Memory limit : 256MB Score : 1400 points Problem Statement Snuke is ...

  2. java的计时:毫秒、纳秒

    System.currentTimeMillis()获取毫秒值,但是其精度依赖操作系统 想实现较为精确的毫秒,可以采用 System.nanoTime()/1000000L System.nanoTi ...

  3. Linux进程IPC浅析[进程间通信SystemV共享内存]

    Linux进程IPC浅析[进程间通信SystemV共享内存] 共享内存概念,概述 共享内存的相关函数 共享内存概念,概述: 共享内存区域是被多个进程共享的一部分物理内存 多个进程都可把该共享内存映射到 ...

  4. Edmonds 开花算法

    Edmonds 开花算法 input: 图G,匹配M,未饱和点u idea: 查找从 u 開始的 M-交错路径.对每一个顶点记录父亲节点. 发现花朵.则收缩. 维护 S 和 T.S 表示沿着已经饱和的 ...

  5. 单点登录cas常见问题(二) - 子系统是否会频繁訪问cas中心?

    这个问题的完整描写叙述是:用户成功登陆后.在訪问子系统的受限资源时,还须要訪问cas中心么,即子系统是否还会频繁訪问cas中心.cas中心会不会压力太大? 答案是:不会. 假设用户通过子系统A登录了c ...

  6. python菜鸟日记1

    1. 在__init__(self,...)初始化函数中.定义对象的属性,这些属性不用所有写在括号里,括号里的表示定义的时候须要赋初始值的一些属性,而其它不用初始值的属性.能够 直接卸载代码块中,se ...

  7. 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)

    首先.在開始搭建MyEclipse的开发环境之前.还有三步工具的安装须要完毕,仅仅要在安装配置成功之后才干够进入以下的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官 ...

  8. 工作总结 js 选择器选择多条元素 支持一起设置他们属性 $("#edumes input[type='radio']").prop("checked", false);

    $("#edumes input[type='radio']").prop("checked", false); $("#edumes input[t ...

  9. hdoj2680 Choose the best route

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  10. iOS开发人员:事实上你还有非常多东西须要学

    iOS 新特性总结(since iOS6) iOS 6 1.废除viewDidUnLoad 收到内存警告须要到didReceiveMemoryWarning中处理 [小技巧] -(void)didRe ...