当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

利用反射获取父类,接口信息

发表于: 2012-11-16   作者:BBjava   来源:转载   浏览次数:
摘要: 这个例子好似来自tij-4,(太久没更新博客了,不记得了)。 这个例子主要是用来说明,运行时能获取的被实现的接口,被继承的类的信息。 在实际开发中是一个蛮常用的手段,比如在框架中要检查某个类是否实现了某一接口。 package org.iteye.bbjava.runtimeinformation; class Toy { /** * It's a c
这个例子好似来自tij-4,(太久没更新博客了,不记得了)。
这个例子主要是用来说明,运行时能获取的被实现的接口,被继承的类的信息。
在实际开发中是一个蛮常用的手段,比如在框架中要检查某个类是否实现了某一接口。

package org.iteye.bbjava.runtimeinformation;




class Toy {

	/**
	 * It's a contructor of Toy class,it could be used contructing an object of
	 * Toy at runtime.
	 * */
	public Toy() {
		// TODO Auto-generated constructor stub
	}

	public Toy(int i) {

	}
}

interface HasBatteries {

}

interface Waterproof {

}

interface Shoots {

}

class FancyToy extends Toy implements HasBatteries, Waterproof, Shoots {
	FancyToy() {
		super(1);
	}
}

public class ToyTest {
	static void printInfo(Class cc) {
		System.out.println("Class name: " + cc.getName() + " is interface?["
				+ cc.isInterface() + "]");
		System.out.println("Simple name: " + cc.getSimpleName());
		System.out.println("Canonical name: " + cc.getCanonicalName());
	}

	public static void main(String[] args) {
		Class c = null;
		try {
			c = Class.forName("org.iteye.bbjava.runtimeinformation.FancyToy");

		} catch (Exception e) {
			System.out.println("Can't find FancyToy");
			System.exit(1);
		}
		printInfo(c);

		for (Class face : c.getInterfaces()) {
			printInfo(face);
			Class up = c.getSuperclass();
			Object obj = null;
			try {
				obj = up.newInstance();

			} catch (InstantiationException e) {
				System.out.println("Can't getInstance from up object");
				System.exit(1);
			} catch (IllegalAccessException e) {
				System.out.println("Can't access");
				System.exit(1);
			}
			printInfo(obj.getClass());
		}
	}
}



console info:
引用
Class name: org.iteye.bbjava.runtimeinformation.FancyToy is interface?[false]
Simple name: FancyToy
Canonical name: org.iteye.bbjava.runtimeinformation.FancyToy
Class name: org.iteye.bbjava.runtimeinformation.HasBatteries is interface?[true]
Simple name: HasBatteries
Canonical name: org.iteye.bbjava.runtimeinformation.HasBatteries
Class name: org.iteye.bbjava.runtimeinformation.Toy is interface?[false]
Simple name: Toy
Canonical name: org.iteye.bbjava.runtimeinformation.Toy
Class name: org.iteye.bbjava.runtimeinformation.Waterproof is interface?[true]
Simple name: Waterproof
Canonical name: org.iteye.bbjava.runtimeinformation.Waterproof
Class name: org.iteye.bbjava.runtimeinformation.Toy is interface?[false]
Simple name: Toy
Canonical name: org.iteye.bbjava.runtimeinformation.Toy
Class name: org.iteye.bbjava.runtimeinformation.Shoots is interface?[true]
Simple name: Shoots
Canonical name: org.iteye.bbjava.runtimeinformation.Shoots
Class name: org.iteye.bbjava.runtimeinformation.Toy is interface?[false]
Simple name: Toy
Canonical name: org.iteye.bbjava.runtimeinformation.Toy

利用反射获取父类,接口信息

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
#!/usr/bin/env python #coding:utf-8 # import paramiko import pexpect #定义设备登陆参数 user =
直奔主题,利用Google OAuth2.0获取用户信息.希望对大家有帮助. 获取方法有好多种,网上有的方法是通
.NET接口和类 反射的差异性发现 1 背景 在项目中使用反射,反射出某类型的所有属性(Property)和对应
1 背景 在项目中使用反射,反射出某类型的所有属性(Property)和对应的属性值。起初为了性能考虑在模
接上一篇博文 反射+枚举+freemarker,自动生成实体类,自动建表建索引(一)之生成实体类,枚举详解
在上一节中我们有测试过使用GetClassInfoEx读取不到窗体类信息,我们这一节将学习通过GetClassLongP
1.核心:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=192.152.3.25 把这句
  近排在做微信接口开发,所以总结一下微信授权登录并获取用户信息 这个接口的开发流程。 一、首
https://openapi.youku.com/v2/videos/show_basic.json?video_id=XNjY1NDA2MDAw&client_id=b10ab858
本文来自 fair-jm.iteye.com 转截请注明出处 用了下JPA对于其方便的操作很好奇 通过继承CRUDReposit
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号