反射reflection(1)

java属于静态语言,但是java也被称之为准动态语言,即利用反射的机制获得类似动态语言的特性

静态语言:C、C++、Java

动态语言:C#、PHP、Python、JavaScript

Reflection(反射)是java被视为动态语言的关键,反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象的内部属性和方法

正常方式:引入需要的包类名称-->通过new实例化-->取得实例化对象

反射方式:实例化对象-->getClass()方法-->得到完整的包类名称


package com.reflection;

//什么叫反射
public class Test01 {
    public static void main(String[] args) throws ClassNotFoundException {
        //通过反射获取类的class对象
        Class c1 = Class.forName("com.reflection.User");
        System.out.println(c1);

        Class c2 = Class.forName("com.reflection.User");
        Class c3 = Class.forName("com.reflection.User");

        //一个类在内存中只有一个Class对象
        //一个类被加载后,类的整个结构都会被封装在class对象中
        System.out.println(c1.hashCode());
        System.out.println(c2.hashCode());
        System.out.println(c3.hashCode());//c1、c2、c3的hashCode都是一样的
    }
}
class User{
    private String name;
    private int age;

    public User(){}
    public User(String name,int age){
        this.name = name;
        this.age = age;
    }

    public void setName(String name){
        this.name = name;
    }
    public void setAge(int age){
        this.age =age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
    private void test(){}

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

posted @ 2022-05-11 10:36  长空扯淡  阅读(41)  评论(0)    收藏  举报