反射机制的核心应用-取得类的结构
反射机制是在运行时发挥能力的技术,依靠java系统平台的支持,运行时获取得类定义的结构:
通过反射可以得到一个类的完整结构,需要使用java.lang.reflect包中的类:
1.Constructor:表示类中的构造方法;
2.Field:表示类中的属性;
3.Method:表示类中的方法;
这三个类都是AccessibleObject类的子类;
———–利用反射机制获取类实现的所有接口:
public Class>[] getInterfaces();// 返回值是Class泛型实例;
package com.mldn;
interface Chinese
{
public static final String NATIONAL = “China”; // 全局常量
public void sayChina(); // 抽象方法
public void sayHello();
}
class Person implements Chinese
{
private String name = null;
private int age = 0;
public Person() // 无参构造
{}
public Person(String name, int age)
{ // 有参构造
this.name = name;
this.age = age;
}
public void sayChina() // 覆写
{
System.out.println(“China,I’m Chinese!”);
}
public void sayHello() // 覆写
{
System.out.println(“Hello, World!”);
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
public String toString()
{
return “姓名:” + this.name + ” 年龄:” + this.age;
}
}
public class GetInterface
{
public static void main(String[] args)
{
// 用Class反射机制可以获取Person类实现的所有接口:
Class> c = null; // 声明Class对象
try
{
c = Class.forName(“com.mldn.Person”); // 实例化Class对象
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Class>[] c1 = c.getInterfaces(); // 获取c反射的类(Person)所实现的所有接口数组
for (Class> i : c1)
{
System.out.println(“实现的接口:” + i.getName());
}
}
}
/*
ubuntu@xu-desktop:~$ java com.mldn.GetInterface
实现的接口:com.mldn.Chinese
// 通过反射可以获得一个对象的类,以及这个类实现的接口,对于一个类当然可以获得其实现的接口
*/
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《反射机制的核心应用-取得类的结构》
本文地址:http://www.xiupu.net/archives-137.html
关注公众号:
微信赞赏
支付宝赞赏