栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java获取类运行时的结构

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java获取类运行时的结构

获取类运行时的结构

通过反射获得运行时类的完整结构

Field,Method,Constructor,Superclass,Interface,Annotation

  • 实现的全部接口
  • 所继承的父类
  • 全部的构造器
  • 全部的方法
  • 全部的Field
  • 注解
package reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

//获取类的信息
public class Test07 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
       Class c1 = Class.forName("reflect.User");

//        User user = new User();
//        Class c1 = user.getClass();

        //获取类的名字
        System.out.println("获取类的名字-----------------------------------------------------");
        System.out.println(c1.getName());//获取包名+类名
        System.out.println(c1.getSimpleName());//获取类名

        //获取类的属性
        System.out.println("获取类的属性-----------------------------------------------------");
        Field[] fields = c1.getFields();//只能找到public属性
        fields = c1.getDeclaredFields();//找到全部的属性
        for (Field field : fields) {
            System.out.println(field);
        }
        //获得指定属性的值
        Field name = c1.getDeclaredField("name");
        System.out.println(name);

        //获得类的方法
        System.out.println("获取类的方法-----------------------------------------------------");
        Method[] methods = c1.getMethods();
        for (Method method : methods) {
            System.out.println("公共的:"+method);//获得本类及其父类所有的public方法
        }
        methods = c1.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println("全部的:"+method);//获得本类全部方法
        }
        //获得指定方法
        Method getName = c1.getMethod("getName",null);
        Method setName = c1.getMethod("setName", String.class);
        System.out.println(getName);
        System.out.println(setName);

        //获得类的构造器
        System.out.println("获取类的构造器-----------------------------------------------------");
        Constructor[] constructors = c1.getConstructors();
        for (Constructor constructor : constructors) {
            System.out.println(constructor);
        }
        constructors = c1.getDeclaredConstructors();
        for (Constructor constructor : constructors) {
            System.out.println("##"+constructor);
        }
        //获得类的指定构造器
        Constructor DeclaredConstructor = c1.getDeclaredConstructor(String.class,int.class,int.class);
        System.out.println("指定的:"+DeclaredConstructor);
        
    }
}

运行结果

获取类的名字-----------------------------------------------------
reflect.User
User
获取类的属性-----------------------------------------------------
private java.lang.String reflect.User.name
private int reflect.User.age
private int reflect.User.id
private java.lang.String reflect.User.name
获取类的方法-----------------------------------------------------
公共的:public java.lang.String reflect.User.toString()
公共的:public java.lang.String reflect.User.getName()
公共的:public int reflect.User.getId()
公共的:public void reflect.User.setName(java.lang.String)
公共的:public void reflect.User.setId(int)
公共的:public void reflect.User.setAge(int)
公共的:public int reflect.User.getAge()
公共的: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 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()
全部的:public java.lang.String reflect.User.toString()
全部的:public java.lang.String reflect.User.getName()
全部的:public int reflect.User.getId()
全部的:public void reflect.User.setName(java.lang.String)
全部的:public void reflect.User.setId(int)
全部的:public void reflect.User.setAge(int)
全部的:public int reflect.User.getAge()
public java.lang.String reflect.User.getName()
public void reflect.User.setName(java.lang.String)
获取类的构造器-----------------------------------------------------
public reflect.User()
public reflect.User(java.lang.String,int,int)
##public reflect.User()
##public reflect.User(java.lang.String,int,int)
指定的:public reflect.User(java.lang.String,int,int)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/632564.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号