• 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语句

  • 相关阅读:
    .NET:在ASP.NET中如何进行IP限制
    vim配置文件和插件
    初学Perl的感受之数据类型
    ASP.NET伪静态详解及配置
    Wayback Machine
    对单元测试的一点感悟——这是一把双刃剑
    python中使用postgres
    第三章 匿名方法
    在C#程序中使用ocx的方法
    可扩展的 “密码强度” 代码示例
  • 原文地址:https://www.cnblogs.com/laowt/p/14594590.html
Copyright © 2020-2023  润新知