java 反射机制-获取对应class信息

 1 package reflection;
 2
 3 public class User {
 4     public String name;
 5     protected int age;
 6     String address;
 7     private String sex;
 8
 9     public User() {
10         super();
11     }
12
13     public User(String name, int age, String sex) {
14         super();
15         this.name = name;
16         this.age = age;
17         this.sex = sex;
18     }
19
20     public String getName() {
21         return name;
22     }
23     public void setName() {
24         this.name = "test";
25     }
26     public int getAge() {
27         return age;
28     }
29     public String getSex() {
30         return sex;
31     }
32     public void setSex(String sex) {
33         this.sex = sex;
34     }
35
36 }

class User

 1 package reflection;
 2
 3 import java.lang.reflect.Constructor;
 4 import java.lang.reflect.Field;
 5 import java.lang.reflect.Method;
 6
 7 public class Demo01 {
 8     public static void main(String[] args) {
 9
10         Class<?> c;
11         try {
12             c = Class.forName("reflection.User");
13
14             // 获取类的名称
15             System.out.println("获取类的名称");
16             System.out.println("getName():" + c.getName());// 获得包名+类名
17             System.out.println("getSimpleName():" + c.getSimpleName());// 获得类名
18             System.out.println("getCanonicalName():" + c.getCanonicalName());// 获得类名
19             System.out.println("*******************************");
20             // 获取属性信息
21             System.out.println("获取属性信息");
22             Field[] fields = c.getDeclaredFields();
23             // Field[] fields = c.getFields(); 只能获取public修饰的属性信息
24             for (Field f : fields) {
25                 String fName = f.getName();
26                 System.out.println(c.getDeclaredField(fName));
27             }
28             System.out.println("*******************************");
29             // 获取方法信息
30             System.out.println("获取方法信息");
31             Method[] methods = c.getDeclaredMethods();
32             for (Method m : methods) {
33                 // String mName = m.getName();
34                 System.out.println(m.getName() + "-->" + m);
35             }
36             System.out.println("通过名称单独获取对应的getName方法:" + c.getDeclaredMethod("getName"));
37             System.out.println("通过名称单独获取对应的setSex方法:" + c.getDeclaredMethod("setSex", String.class));// 方法有参,必须传递参数类型
38             System.out.println("*******************************");
39             // 获取构造器信息
40             System.out.println("获取构造器信息");
41             Constructor<?>[] constructor = c.getConstructors();
42             for (Constructor<?> cons : constructor) {
43                 System.out.println(cons);
44             }
45
46         } catch (ClassNotFoundException | NoSuchFieldException | SecurityException e) {
47             e.printStackTrace();
48         } catch (NoSuchMethodException e) {
49             e.printStackTrace();
50         }
51     }
52 }

output:

获取类的名称
getName():reflection.User
getSimpleName():User
getCanonicalName():reflection.User
*******************************
获取属性信息
public java.lang.String reflection.User.name
protected int reflection.User.age
java.lang.String reflection.User.address
private java.lang.String reflection.User.sex
*******************************
获取方法信息
getName-->public java.lang.String reflection.User.getName()
setName-->public void reflection.User.setName()
setSex-->public void reflection.User.setSex(java.lang.String)
getSex-->public java.lang.String reflection.User.getSex()
getAge-->public int reflection.User.getAge()
通过名称单独获取对应的getName方法:public java.lang.String reflection.User.getName()
通过名称单独获取对应的setSex方法:public void reflection.User.setSex(java.lang.String)
*******************************
获取构造器信息
public reflection.User()
public reflection.User(java.lang.String,int,java.lang.String)
时间: 2024-08-09 06:35:11

java 反射机制-获取对应class信息的相关文章

java 反射机制获取类名、属性、方法、构造器和反射动态使用

被反射的类: @Table("tb_student") public class Student { @Fields(columnName="id",type="int",length=10) private int id; @Fields(columnName="studentName",type="varchar",length=10) private String studentName; @Fiel

通过java反射机制获取该类的所有属性类型、值。

转自:http://blog.sina.com.cn/s/blog_3c62c21f01011xci.html 方法使用了这俩个包下的 field 和method import java.lang.reflect.Field; import java.lang.reflect.Method; public static void getObjectValue(Object object) throws Exception {   //我们项目的所有实体类都继承BaseDomain (所有实体基类

Java反射机制的学习

Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法). 也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制.你会嗤之以鼻地告诉我,Java反射机制没啥用.或许在J2EE.J2SE等平台,Java反射机制没啥用(具体我也不了解,不多做评论),但是在Android应用开发中,该

[转载] Java反射机制的学习

本文转载自: http://www.blogjava.net/zh-weir/archive/2011/03/26/347063.html Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法). 也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制.你会嗤之以鼻地告诉我,Ja

Java反射机制能够获取的信息,与应用

一.什么是Java反射机制? [1]反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法: [2]对于任意一个对象,都能够调用它的任意一个属性和方法: 像这种动态获取类的信息以及动态调用对象的方法的骚操作称为java语言的反射机制. 二.Java反射机制能够获取及操作哪些信息? [1]获取类的包名 + 类名 1 package com.zyy.test.reflect; 2 3 public class TestReflect { 4 5 public static void

java 反射机制:运行时的类信息(为框架服务的Bug存在)

反射机制:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 换一种引出反射的说法是:当通过反射与一个未知的类型的对象打交道是,JVM只是简单地检查这个类,看它是属于哪个特定的类(就想RTTI那样).在用它做其他事情之前必须先加载那个类的Class对象.因此,那个类的.class文件对于JVM来说必须是可获取的:那么在本地机器上,要么通过网络获得

java 中利用反射机制获取和设置实体类的属性值

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. JAVA反射(放射)机制:"程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言".从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言.但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可

【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; private String name; private Boolean flag; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getNam

Java反射机制demo(四)—获取一个类的父类和实现的接口

Java反射机制demo(四)—获取一个类的父类和实现的接口 1,Java反射机制得到一个类的父类 使用Class类中的getSuperClass()方法能够得到一个类的父类 如果此 Class 表示 Object 类.一个接口.一个基本类型或 void,则返回 null.如果此对象表示一个数组类,则返回表示该 Object 类的 Class 对象. 测试代码: package com.aaron.reflect; public class Demo4 { public static void