我是靠谱客的博主 冷傲帆布鞋,最近开发中收集的这篇文章主要介绍java-通过反射获取目标类的属性,方法,构造器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先定义一个urse

 1 package com.studay_fanshe;
 2
 3 public class User {
 4
private String uname;
 5
private int age;
 6
private int id;
 7
 8
public User() {
 9 
}
10
11
public User(String uname, int age, int id) {
12
this.uname = uname;
13
this.age = age;
14
this.id = id;
15 
}
16
17
public String getUname() {
18
return uname;
19 
}
20
public void setUname(){
21
this.uname="七月";
22 
}
23
public void setUname(String uname) {
24
this.uname = uname;
25 
}
26
27
public int getAge() {
28
return age;
29 
}
30
31
public void setAge(int age) {
32
this.age = age;
33 
}
34
35
public int getId() {
36
return id;
37 
}
38
39
public void setId(int id) {
40
this.id = id;
41 
}
42 }
 1 package com.studay_fanshe;
 2
 3 import java.lang.reflect.Constructor;
 4 import java.lang.reflect.Field;
 5 import java.lang.reflect.Method;
 6
 7 public class test01 {
 8
public static void main(String[] args) throws Exception{
 9
10
Class clazz = Class.forName("com.studay_fanshe.User");
11 //获取名字
12
String name = clazz.getName();//获取包名+类名:com.studay_fanshe.User
13 
System.out.println(name);
14
String simpleName = clazz.getSimpleName();//获取类名:User
15 
System.out.println(simpleName);
16
//获取属性
17
Field[] fields = clazz.getFields();//获取所有的公共的public修饰的属性
18 
System.out.println(fields.length);
19
Field[] f = clazz.getDeclaredFields();//获取全部的属性包括私有的
20
for (Field field : f) {
21
/*
private java.lang.String com.studay_fanshe.User.uname
22 
private int com.studay_fanshe.User.age
23 
private int com.studay_fanshe.User.id*/
24 
System.out.println(field);
25 
}
26
//获取指定属性名的属性:private java.lang.String com.studay_fanshe.User.uname
27
Field uname = clazz.getDeclaredField("uname");
28 
System.out.println(uname);
29 //获取方法
30
Method[] methods = clazz.getMethods();//获取指定类中所有的方法
31
for (Method method : methods) {
32
System.out.println("所有的方法:"+method);
33 
}
34
//获取指定类中公有的方法
35
Method[] m = clazz.getDeclaredMethods();
36
for (Method method : m) {
37
System.out.println("public公有的方法"+method);
38 
}
39
System.out.println("--------------------------------------------");
40
/*
public void setUname(String uname) {
41 
this.uname = uname;
42 
}*/
43
//有参数类型必须传入参数类型对应的class对象
44
Method setUname = clazz.getDeclaredMethod("setUname", String.class);
45 
System.out.println(setUname);
46
/*
public void setUname(){
47 
this.uname="七月";
48 
}*/
49
//没有参数类型那么参2我们就写null
50
Method setUname1 = clazz.getDeclaredMethod("setUname", null);
51 
System.out.println(setUname1);
52
//获得构造器
53
Constructor[] dc = clazz.getDeclaredConstructors();
54
for (Constructor constructor : dc) {
55
System.out.println("构造器:"+constructor);
56 
}
57
Constructor dec = clazz.getDeclaredConstructor(String.class, int.class, int.class);
58
System.out.println("指定的构造器:"+dec);
59 
}
60 }

 

转载于:https://www.cnblogs.com/xiaoqiqistudy/p/11017446.html

最后

以上就是冷傲帆布鞋为你收集整理的java-通过反射获取目标类的属性,方法,构造器的全部内容,希望文章能够帮你解决java-通过反射获取目标类的属性,方法,构造器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部