博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射机制demo(四)—获取一个类的父类和实现的接口
阅读量:6111 次
发布时间:2019-06-21

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

hot3.png

Java反射机制demo(四)—获取一个类的父类和实现的接口

1,Java反射机制得到一个类的父类

使用Class类中的getSuperClass()方法能够得到一个类的父类

如果此 Class 表示 Object 类、一个接口、一个基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示该 Object 类的 Class 对象。
测试代码:

/** * Created with IntelliJ IDEA. * Description: * User: zhubo * Date: 2017-09-01 * Time: 17:34 */public class Demo4 {    public static void main(String[] args) {        Class
c = Integer.class; System.out.println("Integer的父类是:"+c.getSuperclass()); c = Number.class; System.out.println("Number的父类是:"+c.getSuperclass()); c = Object.class; System.out.println("Object的父类是:"+c.getSuperclass()); }}
Integer的父类是:class java.lang.NumberNumber的父类是:class java.lang.ObjectObject的父类是:null

由于Java没有多继承,一个类最多只能有一个父类,因此返回类型并不是一个数组。

2,Java反射机制返回一个类实现的接口

当我们开发一个接口,并用一个类去实现它,我们看到某个类,就知道它实现了对应的什么接口,但是机器本身得到一个类时,并不知道它实现的接口是什么样子。通过反射机制,可以取到某个类实现的接口的Class对象,从而可以探查这个接口内部的结构。

本文中给出了一个简单的Demo。

首先,接口的定义如下;

/** * Created with IntelliJ IDEA. * Description: * User: zhubo * Date: 2017-09-01 * Time: 17:58 */public interface Animal {    public static final String name="animal";    public String sayHello(String name);}

然后,定义一个类去实现这个接口

/** * Created with IntelliJ IDEA. * Description: * User: zhubo * Date: 2017-09-01 * Time: 17:58 */public class Dog implements Animal {    @Override    public String sayHello(String str) {        return String.format("",this.name,str);    }}

接口和实现类中都只有一个方法。

测试类的代码如下:

public static void main(String[] args) {    Class
c = Dog.class; Class
interfaces[] = c.getInterfaces(); for (Class
inte : interfaces){ System.out.println("Dog实现接口 : " + inte); }}

运行结果:

Dog实现接口 : interface reflact.bean.Animal

当然,Java没有多继承,但是可以实现多个接口,因此这里返回了一个数组。

需要注意的是:

Class<?>[] getInterfaces()得到的数组中,接口对象顺序和这个对象所表示的类中implements子句中接口名的顺序,是一致的

 

 

 

 

转载于:https://my.oschina.net/LucasZhu/blog/1527702

你可能感兴趣的文章
磁盘管理
查看>>
luov之SMTP报错详解
查看>>
软件概要设计做什么,怎么做
查看>>
dwr
查看>>
java的特殊符号
查看>>
word2010中去掉红色波浪线的方法
查看>>
fabric上下文管理器(context mangers)
查看>>
JQuery-EasyUI Datagrid数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
查看>>
并发和并行的区别
查看>>
Java增强的for循环和普通for循环对比
查看>>
颜色渐变的算法
查看>>
第四次作业
查看>>
getLocation需要在app.json中声明permission字段,解决办法
查看>>
xtrabackup工具
查看>>
.NET下WPF学习之Socket通信
查看>>
【转载】APK反破解之一:Android Java混淆(ProGuard)
查看>>
安装SQL SERVER 2005 SP2后, IIS无法辨认SVC文件
查看>>
log4j配置后行号乱码显示为?问号
查看>>
HRBUST 1478 最长公共子序列的最小字典序
查看>>
MySQL所有函数及操作符
查看>>