Java基础加强之反射详解编程语言

1.什么是反射?

反射其实就是动态的加载类,我们在写JDBC的时候加载驱动Class.forName(“xxx”)时就涉及到了反射。

反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

2.反射机制能做什么?

1. 在运行时判断任意一个对象的所属的类Class

2. 在运行时判断构造任意一个类的对象Constructor

3. 在运行时判断任意一个类所具有的成员变量Field和方法Method

4. 在运行时调用任意一个对象的方法。method.invoke(object,args)

3.反射机制相关的API

获得完整的包名和类名

Student.java

Java基础加强之反射详解编程语言

 1 package com.reflect.test; 
 2  
 3 public class Student { 
 4     private int id; 
 5     private String name; 
 6      
 7     public Student() {} 
 8      
 9     public Student(int id, String name) { 
10         super(); 
11         this.id = id; 
12         this.name = name; 
13     } 
14  
15     public int getId() { 
16         return id; 
17     } 
18  
19     public void setId(int id) { 
20         this.id = id; 
21     } 
22  
23     public String getName() { 
24         return name; 
25     } 
26  
27     public void setName(String name) { 
28         this.name = name; 
29     } 
30  
31     @Override 
32     public String toString() { 
33         return "Student [id=" + id + ", name=" + name + "]"; 
34     } 
35      
36      
37      
38      
39 }

 

Test.java

package com.reflect.test; 
 
public class Test { 
     
    Student stu = new Student(); 
     
    public static void main(String[] args) { 
        Test test = new Test(); 
        test.getClassName(); 
    } 
    //获得完整的包名和类名 
    public void getClassName() { 
        System.out.println(stu.getClass().getName()); 
    } 
 
}

 

运行结果

Java基础加强之反射详解编程语言

com.reflect.test.Student

 

获取Class的三种方法

   public static void main(String[] args) { 
        Test test = new Test(); 
        test.getStudentClass(); 
    } 
     
    //获取Class对象的三种犯法 
    public void getStudentClass() { 
        //第一种方法,forName 
        Class<?> class1; 
        try { 
            class1 = Class.forName("com.reflect.test.Student"); 
            System.out.println("class1:"+class1); 
        } catch (ClassNotFoundException e) { 
            e.printStackTrace(); 
        }         
        //第二种方法,class 
        Class<?> class2 = Student.class; 
        System.out.println("class2:"+class2); 
        //第三种方法,getClass() 
        Student stu1 = new Student(); 
        Class<?> class3 = stu1.getClass(); 
        System.out.println("class3:"+class3); 
    }

 

运行结果

Java基础加强之反射详解编程语言

class1:class com.reflect.test.Student 
class2:class com.reflect.test.Student 
class3:class com.reflect.test.Student

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11149.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论