Class类相关

Class类是java.lang包中的类,该类的实例可以帮助程序创建其他类的实例或者取得其他类的对象的内部信息

使用class类获得一个类相关的class类(注意得到的是class类,不是相关的类) 比如类名 classFuck类

有类方法(静态方法)public static Class forName(String classFuck)throw ClassNotFoundException

然后我们用Class对象调用以下方法(classFuck必须有一个无参构造函数

public Object newInstance() throws InstantiationException,IllegalAccessException

我们就可以拥有了一个classFuck类的实体

try{
            Class cs=Class.forName("A");//这里用string的形式
            A a=(A)cs.newInstance();//这里用回一个(A)
            System.out.println(a.f());
        }
        catch(Exception a){
            System.out.println(a.getMessage());
        }

如果我们有了一个实例了,我们可以用getClass()的方法,返回一个和对象相关class 实例

这个class有以下方法可以了解到classfuck类的信息

String getName()

Constructor[] getConstructors()//返回类的所有构造方法

Field[] getDeclaredFields()//返回类的全部成员变量

Method[] getDeclareMethods()//返回类的全部方法

import java.util.regex.*;
import java.lang.reflect.*;
import java.util.Scanner;
public class test{
    public static void main(String args[]){
        A a=new A();
        Class b=a.getClass();
        System.out.println(b.getName());
        Constructor[] c=b.getDeclaredConstructors();
        Field[] d=b.getDeclaredFields();
        Method[] e=b.getDeclaredMethods();
        for(int i=0;i<c.length;i++){
            System.out.println(c[i].toString());
        }
        for(int i=0;i<d.length;i++){
            System.out.println(d[i].toString());
        }
        for(int i=0;i<e.length;i++){
            System.out.println(e[i].toString());
        }
    }
}

class A{
    int a=2,b=3;
    int f(){
        return a*b;
    }
    void ff(){
        System.out.println("fuck");
    }
    A(int a,int b){
        this.a=a;
        this.b=b;
    }
    A(){}
}
原文地址:https://www.cnblogs.com/vhyc/p/5950581.html