java反射、注解、序列化详解二

好了,我们开始这个系列详解二的学习。

先介绍一下Class类的常用方法

static ClassforName(String name) 返回指定类名name的Class对象
Object newInstance() 调用缺省构造函数,返回class对象的一个实例
getName() 返回此Class对象所表示的实体(类,接口,数组类或者是void)的名称
Class getSuperClass() 返回当前Class对象的父类的Class对象
Class[] getinterfaces() 获取当前Class对象的接口
ClassLoader getClassLoader() 返回该类的类加载器
Constructor[] getConstructors() 返回一个包含某些Constructor对象的数组
Method getMothed(String name, Class… T) 返回一个Method对象,此对象的形参是paramType
Field[] getDeclaredFields() 返回Filed对象的一个数组

下面介绍4种获取类的几种方式:

public class test02 {
    public static void main(String[] args) throws ClassNotFoundException {
        Person person = new Student();
        System.out.println("这个人是:" + person.name);

        //方式一:通过对象获取
        Class c1 = person.getClass();
        System.out.println(c1.hashCode());

        //方式二:forname获得
        Class c2 = Class.forName("com.company.Student");
        System.out.println(c2.hashCode());

        //方式三:通过类名.class获得
        Class c3 = Student.class;
        System.out.println(c2.hashCode());

        //方式四:获得一个类的父类
        Class c4 = c1.getSuperclass();
        System.out.println(c4);
    }
}

class Person{
    public Person(String name) {
        this.name = name;
    }

    public Person() {
    }

    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}

class Student extends Person{
    public Student(){
        this.name = "学生";
    }
}

class Teacher extends Person{
    public Teacher(){
        this.name = "老师";
    }
}

下面展示输出结果:
在这里插入图片描述
好了,先到这里,推荐一下B站的up主:狂神说java,我基本上都是跟着他学习的~

猜你喜欢

转载自blog.csdn.net/weixin_45806131/article/details/107854170