java反射-获取类的Class对象方式

简介: java反射-获取类的Class对象方式

一、类的原始信息

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 "我是返回值";
    }
}

二、获取类的Class对象的四种方式

 public static void main(String[] args) throws IOException, ClassNotFoundException {
        //通过类获取Class对象
        Class<UserInfo> aClass1 = UserInfo.class;
        //通过对象获取Class对象
        Class<? extends UserInfo> aClass2 = new UserInfo().getClass();
        //通过类加载器加载全路径获取Class对象
        Class<?> aClass3 = UserInfo.class.getClassLoader().loadClass("org.example.entity.UserInfo");
        //通过静态方法获取类的Class对象
        Class<?> aClass4 = Class.forName("org.example.entity.UserInfo");
        System.out.println(aClass1.hashCode());
        System.out.println(aClass2.hashCode());
        System.out.println(aClass3.hashCode());
        System.out.println(aClass4.hashCode());
    }
public UserInfo()
968514068
968514068
968514068
968514068

获取的Class对象hashCode都是一样的,Class对象是单例

相关文章
|
3月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
415 0
|
4月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
279 101
|
4月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
323 100
|
5月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
482 143
|
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
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
256 1