zoukankan      html  css  js  c++  java
  • java反射基础之三种反射

    Java反射

    反射反射 首先说“

    所谓的正操作指的是当我们要使用一个类的时候 一定要先导入程序所在的包 然后根据类进行对象的实例化,并且依靠对象调用类中的方法。但是说‘’,根据实例化对象反推出其类型.

    举例

    import java.util.Date;
    public class JavaAPIDemo {
        public static void main(String args[]) {
            Date a = new Date();
            System.out.println(a.getTime())
        }
    }
    

    如果要想实现反的处理操作,首先采用Object类中的方法

    举例

    import java.util.Date;
    public class JavaAPIDemo {
        public static void main(String args[]) {
            Date a = new Date();
            System.out.println(a.getClass())
        }
    }
    

    getClass()可以帮助使用者找到对象的根源

    反射之中所有的核心操作都是通过Class类对象展开的,可以说Class类是反射操作的根源所在,如果想获取他的实例化对象,可以通过三种方式完成。

    1、[Object类支持] public final Class<?> getClass
    

    举例

    package run.time;
    
    class Person {
    }
    
    public class runtimesss {
        public static void main(String args[]) {
            Person person = new Person();
            Class<? extends Person> cls = person.getClass();
            System.out.println(cls);
            System.out.println(cls.getName());
        }
    }
    

    这种方式有一个不是缺点的缺点:如果现在只是想获得Class类对象,则必须产生指定类对象后才能获得

    2、[JVM支持] 采用“类.class”
    

    举例

    class Person {
    
    }
    
    public class runtimesss {
        public static void main(String args[]) {
            Class<? extends Person> cls = Person.class;
            System.out.println(cls);
            System.out.println(cls.getName());
        }
    
    }
    
    3、【Class类支持】在Class类里面提供有一个方法static方法
    public static Class<?> forName(String className)
    throws ClassNotFoundException
    

    举例

    package run.time;
    public class runtimesss {
        public static void main(String args[]) throws ClassNotFoundException {
            Class<?> forname = Class.forName("vo.Person");
            System.out.println(forname.getName());
        }
    }
    

    注意包

    package vo;
    
    public class Person {
        
    }
    

    这种模式可以直接采用字符串形式定义要使用的类型并且程序中不需要编写任何的import语句

  • 相关阅读:
    [转]为什么阿里巴巴要禁用Executors创建线程池?
    支付宝的架构到底有多牛逼!
    [转] Java Agent使用详解
    Spring Boot必备技能之Starter自定义
    面试题:JVM 堆内存溢出后,其他线程是否可继续工作?
    Docker 容器化应用
    Python Click 学习笔记
    MySQL优化(7):其他注意事项
    MySQL优化(6):分表和读写分离
    MySQL优化(5):分区
  • 原文地址:https://www.cnblogs.com/laowt/p/14594590.html
Copyright © 2011-2022 走看看