java反射-获取类的属性、构造方法、方法

简介: java反射-获取类的属性、构造方法、方法

一、基础类

public class UserInfo {
 
    private long id;
    private String username;
    private String password;
 
    public UserInfo() {
        System.out.println("public UserInfo()");
    }
 
    public UserInfo(long id) {
        super();
        this.id = id;
    }
 
    public UserInfo(long id, String username) {
        super();
        this.id = id;
        this.username = username;
    }
 
    public UserInfo(long id, String username, String password) {
        super();
        this.id = id;
        this.username = username;
        this.password = password;
        System.out.println("public UserInfo(long id, String username, String password)");
        System.out.println(id + " " + username + " " + password);
 
    }
 
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public void test() {
        System.out.println("public void test1()");
    }
 
    public void test(String address) {
        System.out.println("public void test2(String address) address=" + address);
    }
 
    public String test(int age) {
        System.out.println("public String test3(int age) age=" + age);
        return "我是返回值";
    }
}

二、获取属性、构造方法、方法

 public static void main(String[] args) throws IOException, ClassNotFoundException {
        //通过类获取Class对象
        Class<UserInfo> userInfoClass = UserInfo.class;
        System.out.println("属性列表:");
        //    获取属性列表
        Field[] declaredFields = userInfoClass.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            System.out.println(declaredField.getName());
        }
        System.out.println("构造方法:");
        //    获取构造方法
        Constructor<?>[] constructors = userInfoClass.getConstructors();
        for (Constructor<?> constructor : constructors) {
            Class<?>[] parameterTypes = constructor.getParameterTypes();
            System.out.println(constructor.getName()+"参数数量:"+ parameterTypes.length+"参数类型:"+ Arrays.toString(parameterTypes));
        }
        System.out.println("方法:");
        //    获取方法
        Method[] declaredMethods = userInfoClass.getDeclaredMethods();
        for (Method declaredMethod : declaredMethods) {
            System.out.println(declaredMethod);
        }
    }
属性列表:
id
username
password
构造方法:
org.example.entity.UserInfo参数数量:3参数类型:[long, class java.lang.String, class java.lang.String]
org.example.entity.UserInfo参数数量:2参数类型:[long, class java.lang.String]
org.example.entity.UserInfo参数数量:1参数类型:[long]
org.example.entity.UserInfo参数数量:0参数类型:[]
方法:
public void org.example.entity.UserInfo.test()
public java.lang.String org.example.entity.UserInfo.test(int)
public void org.example.entity.UserInfo.test(java.lang.String)
public long org.example.entity.UserInfo.getId()
public void org.example.entity.UserInfo.setPassword(java.lang.String)
public java.lang.String org.example.entity.UserInfo.getUsername()
public void org.example.entity.UserInfo.setId(long)
public void org.example.entity.UserInfo.setUsername(java.lang.String)
public java.lang.String org.example.entity.UserInfo.getPassword()
相关文章
|
3月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
334 18
|
3月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
165 4
|
3月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
244 5
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
240 1
|
3月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
290 1
|
3月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
235 0
|
Java
JAVA方法的定义
JAVA方法的定义
248 0
|
10月前
|
存储 JSON Java
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
242 25
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
193 1
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
248 1