• 反射获取Class对象的三种方式


    import cn.qujianlei.domain.Person;
    
    public class ReflectDemo {
    
        public static void main(String[] args) throws ClassNotFoundException {
    
            /*
             * 
             * 反射技术:动态的获取类以及类中的成员,并可以调用该类的成员。
             * 以前有什么类就new什么对象。
             * 现在没有类,给什么类就new什么对象。
             * 
             * 
             * 反射技术的出现提高了程序的扩展性
             * 反射技术中最重要的一点:先获取到那个类。
             * 如何获取类呢?
             * 
             * 无论new什么对象,都需要先获取字节码文件
             * 如何获取呢?发现java已对字节码文件进行了描述用Class类完成的
             * 
             * 如何获取一个字节码文件的对象呢?
             * 
             * 方式一:Object getClass()方法,发现在反射技术里,该方法不合适,反射技术中不明确具体类
             * 
             * 方式二:所有的数据类型都由自己对应的class对象,表示方法很简单
             * 每一个数据类型都由一个默认的静态属性。.class用该属性就可以获取到字节码文件对象
             * 虽然不用对象调用,但还是要用具体的类调用静态属性。
             * 
             * 方式三:在Class类中找到了forName方法,通过名称就可以获取对应的字节码文件对象
             * 重点!!!!!
             * 
             */
            
    //        methodDemo_1();
            
    //        methodDemo_2();
            
            methodDemo_3();
            
            
        }
        
        public static void methodDemo_3() throws ClassNotFoundException {
            
            String className = "cn.qujianlei.domain.Person";
            
            Class clazz = Class.forName(className);
            
            System.out.println(clazz);
            
        }
    
        public static void methodDemo_2() {
            
            Class clazz = Person.class;
            Class clazz2 = Person.class;
            System.out.println(clazz==clazz2);
            
        }
    
        //获取Class对象的方式一
        public static void methodDemo_1(){
            
            //调用getClass先有对象
            Person p1 = new Person();
            Class c1 = p1.getClass(); 
            
            Person p2 = new Person();
            Class c2 = p2.getClass(); 
            
            System.out.println(c1==c2);
            
            
        }
        
    
    }
    public class Person {
            
        private String name;
        private int age;
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        
        public Person() {
            super();
            System.out.println("person run");
            
        }
        
        public void show(){
            System.out.println("person show run");
        }
        
        public static void staticShow(){
            System.out.println("person static show run");
        }
        
        public void paramShow(String name,int age){
            System.out.println("show:"+name+"---"+age);
        }
        
        
    }
  • 相关阅读:
    情商 EQ & 儿童情商
    如何提高情商 转载
    cs108 03 ( 调试, java通用性)
    java 包 和 物理目录 解惑
    Toad 补充与培训 & 常用菜单
    专题实验 日期类型
    Http Response Code
    Java之 将程序打包成jar包
    Java之网络编程笔记
    java之IO
  • 原文地址:https://www.cnblogs.com/qjlbky/p/5929448.html
Copyright © 2020-2023  润新知