*   [小结](about:blank#_105)

反射


反射当中最重要的内容—检查类的结构

现在我们来介绍获取类结构的相关方法:

  1. Field类 关于类的成员变量

  2. Method 关于类的方法

  3. Constucotr 类的构造器

介绍着三个类分别的作用:

这三个类首先同时有一个叫做getName()的方法,用来返回属性、方法、或构造器的名称。

下面展示一些 getName方法的使用


 try {

            //1.使用forName的方式获取Class类对象

            Class<?> c = Class.forName("com.reflection.Student");

            Field id = c.getField("id"); //这里只能获取到公共的成员属性

            String name = id.getName();

            System.out.println("该属性的名称:" + id);

        } catch (Exception e) {

            e.printStackTrace();

        }



Class类中的

? **public Field[] getFields()

? public Method[] getMethods()

? public Constructor[] getConstructor**s

分别用于返回这个类支持的公共属性、方法、构造器的数组,包括了父类的公共成员

? **getDeclaredFields()

? getDeclaredMethods()

? getDeclaredConstructors()**

这三个方法将会返回类中声明的全部属性、方法和构造器的数组,其中包括了私有的、受保护的成员,但是不包括父类的属性和行为


package com.reflection;



import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

/*

    自定义类的要求:

        能够有私有的(private)公有的(public) 属性以及方法和构造器

 */

public class ClassTest5 {

    public static void main(String[] args) {

        //获取Student类对应的Class类对象

        Class<Student> c = Student.class;



        //演示getFields getMethods getConstructors方法

        //可以根据自己的喜爱 自定义类

        Field[] fields = c.getFields();

        for (Field field : fields) {

            System.out.println("该类公有的属性有:" + field); //包括父类的全部公有属性

        }



        Method[] methods = c.getMethods();

        for (Method method : methods) {

            System.out.println("该类公有的方法有:" + method); //以及父类

        }



        Constructor<?>[] constructors = c.getConstructors();

        for (Constructor<?> constructor : constructors) {

            System.out.println("类公有的构造方法有:" + constructor);

        }

    }

}




package com.reflection;



import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;




# 最后

每年转战互联网行业的人很多,说白了也是冲着高薪去的,不管你是即将步入这个行业还是想转行,学习是必不可少的。作为一个Java开发,学习成了日常生活的一部分,不学习你就会被这个行业淘汰,这也是这个行业残酷的现实。

如果你对Java感兴趣,想要转行改变自己,那就要趁着机遇行动起来。或许,这份**限量版的Java零基础宝典**能够对你有所帮助。

![](https://s2.51cto.com/images/20240912/1726127146410519.jpg)