博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射机制(二)
阅读量:6873 次
发布时间:2019-06-26

本文共 3011 字,大约阅读时间需要 10 分钟。

通过Class类取得完整结构

1 package com.fwj.classdemo;2 3 public interface IStudent {4 5     public static final String AUTHOR = "fwj";6     public String getInfo();7     public void sayHello();8     9 }
1 package com.fwj.classdemo; 2  3 public class Person implements IStudent{ 4  5     private String name; 6     private int age; 7      8     public Person(String name, int age) { 9         super();10         this.name = name;11         this.age = age;12     }13 14     public Person() {15         super();16     }17 18     public Person(String name) {19         super();20         this.name = name;21     }22                   省略getter和setter。。。。23     @Override24     public String toString() {25         return "Person [name=" + name + ", age=" + age + "]";26     }27 28     @Override29     public String getInfo() {30         // TODO Auto-generated method stub31         return AUTHOR + name + age;32     }33 34     @Override35     public void sayHello() {36         // TODO Auto-generated method stub37         System.out.println("hello world!!!");38     }39 }

取得继承的父类

在Class中存在以下方法,可以取得一个类继承的父类

public Class<? super T> getSuperclass()

1 package com.fwj.classdemo; 2  3 import java.lang.reflect.Constructor; 4  5 public class PersonClassDemo { 6  7     public static void main(String[] args) throws Exception{ 8         Class
c = null; 9 Person p = null;10 c = Class.forName("com.fwj.classdemo.Person");//实例化Class对象11 System.out.println(c.getSuperclass().getName());12 }13 }

运行结果:

java.lang.Object

取得实现的全部接口

一个类可以实现多个接口,因此Class类中使用以下方法得到类实现的接口数组。

public Class<?>[] getInterfaces()

1 package com.fwj.classdemo; 2  3 import java.lang.reflect.Constructor; 4  5 public class PersonClassDemo { 6  7     public static void main(String[] args) throws Exception{ 8         Class
c = null; 9 Person p = null;10 c = Class.forName("com.fwj.classdemo.Person");//实例化Class对象11 Class
cs[] = c.getInterfaces();12 for (Class
cl : cs) {13 System.out.println(cl.getName());14 }15 }16 }

运行结果:

com.fwj.classdemo.IStudent

取得到所有的构造方法

Class类中使用以下方法得到所有的构造方法:

public Constructor<?>[] getConstructors()
                                 throws SecurityException

Constructor中使用以下方法得到构造方法的修饰符:

public int getModifiers()

以上方法的返回值是整数,这是由于每一个修饰符对应着一个整数,而且对于 public static final实际上是三个值相加的结果。

如果想要得到一个整数对应的修饰符,则必须使用Modifer类进行还原。方法如下:
public static String toString(int mod)

Constructor中使用以下方法得到参数的类型:

public Class<?>[] getParameterTypes()

取得一个类中的全部方法

Class类中的以下方法返回类中的所用方法:

public Method[] getMethods()
                    throws SecurityException

//Methods中的以下方法,用来得到方法的信息

//取得方法的修饰符

public int getModifiers()
//取得方法的返回值
public Class<?> getReturnType()
//取得方法的全部参数
public Class<?>[] getParameterTypes()
//取得方法的抛出异常
public Class<?>[] getExceptionTypes()
//取得方法的方法名
public String getName()

取得一个类中的全部属性

//得到继承而来的属性

public Field[] getFields()
                  throws SecurityException
//得到自己定义的属性
public Field[] getDeclaredFields()
                          throws SecurityException

转载于:https://www.cnblogs.com/mingluosunshan/p/3214016.html

你可能感兴趣的文章
数位dp题集
查看>>
4-删除、更名
查看>>
C# 汉字转拼音
查看>>
MySQL小知识点
查看>>
jquery实现复制的两种方式
查看>>
一分钟读懂互联网广告竞价策略GFP+GSP+VCG
查看>>
Wannafly 挑战赛 19 参考题解
查看>>
HDU 5666 Segment
查看>>
POJ 2062 HDU 1528 ZOJ 2223 Card Game Cheater
查看>>
selenium、webdriver、浏览器、版本问题
查看>>
数据结构与算法之链表-javascript实现
查看>>
【转】mysql查看表空间占用情况
查看>>
kafka简介
查看>>
POJ 2114 点分治
查看>>
NumPy arrays and TensorFlow Tensors的区别和联系
查看>>
python - 接口自动化测试 - TestRegister - 注册接口测试用例
查看>>
ECMAScript 一元运算符
查看>>
Linux常用命令
查看>>
map侧连接
查看>>
解决walle报错:宿主机代码检出检测出错,请确认svn用户名密码无误
查看>>