美文网首页
Java基础之反射

Java基础之反射

作者: felixfeijs | 来源:发表于2020-07-27 17:59 被阅读0次

Java基础之反射

  • 反射基本介绍
  • 反射的使用
    • 通过反射调用属性和方法
    • 通过反射获取配置文件

反射基本介绍

  • Java反射机制是在运行状态中,对任意一个类,都能够知道这个类所有的属性和方法;等于任意一个对象,能调用它的方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为Java语言的反射机制.
  • 反射就是把Java类中的映射成一个个Java对象,通过该对象调用其方法和属性.

反射的使用

通过反射调用属性和方法
  1. 具体代码
    • 编写User对象
    package com.example.demo.test;
    
    public class User {
    
        public User(){
            System.out.println("这是个构造方法");
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        private String name;
    
    }
    
    • 编写测试代码
        public static void main(String[] args) throws ClassNotFoundException {
        /**
         * 获取class对象 方式1
         * User user1 = new User();
         * Class<? extends User> aClass = user1.getClass();
         */
    
        /**
         * 获取class对象 方式2
         * Class<User> userClass = User.class;
         */
    
        // 1.获取class对象 方式3
        Class<?> user = Class.forName("com.example.demo.test.User");
        // 2. 获取构造方法
        Constructor<?>[] constructors = user.getConstructors();
        for (Constructor conArray:constructors) {
            System.out.println(conArray);
        }
        // 3.获取所有属性
        Field[] fields = user.getFields();
        for (Field item:fields) {
            System.out.println(item);
        }
        // 4. 获取所有方法
        Method[] methods = user.getMethods();
        for (Method item:methods) {
            System.out.println(item);
        }
    }
    
    • 控制台结果
    public com.example.demo.test.User()
    public java.lang.String com.example.demo.test.User.getName()
    public void com.example.demo.test.User.setName(java.lang.String)
    public final void java.lang.Object.wait() throws java.lang.InterruptedException
    public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
    public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
    public boolean java.lang.Object.equals(java.lang.Object)
    public java.lang.String java.lang.Object.toString()
    public native int java.lang.Object.hashCode()
    public final native java.lang.Class java.lang.Object.getClass()
    public final native void java.lang.Object.notify()
    public final native void java.lang.Object.notifyAll()
    
通过反射获取配置文件
  1. 具体代码
    • 配置text.txt文件内容
    name=fpf
    
    • 测试代码
        public static void main(String[] args) throws IOException {
        String value = getValue("name");
        System.out.println(value);
    }
    
    //此方法接收一个key,在配置文件中获取相应的value
    public static String getValue(String key) throws IOException {
        String c2 = ClassLoader.getSystemClassLoader().getResource("test.txt").getPath();
        Properties pro = new Properties();//获取配置文件的对象
        FileReader in = new FileReader(c2);//获取输入流
        pro.load(in);//将流加载到配置文件对象中
        in.close();
        return pro.getProperty(key);//返回根据key获取的value值
    }
    
    • 控制台结果
    fpf
    

相关文章

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射

    Java基础之—反射(非常重要)

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java基础之java反射

    什么是反射简单地说,反射就是在JVM运行期间,通过类名,就可以拿到类的所有信息,如变量,方法等 Class该类位于...

  • Java基础之—反射

    一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象...

  • java基础之反射

    反射概述 JAVA反射机制是在运行状态中,对于任意一个类都能够知道这个类的所有属性和方法; 对于任意一个对象,都能...

  • Java基础之—反射

    1)类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进...

  • Java基础之反射

    Java-Reflect Class类的使用 方法的反射 成员变量的反射 构造函数的反射 Java类加载机制 一、...

  • JAVA基础之反射

    1.认识反射 利用对象找到对象的出处,在object中类有一个方法叫做getClass(); 2.反射机制 cla...

网友评论

      本文标题:Java基础之反射

      本文链接:https://www.haomeiwen.com/subject/cjctrktx.html