Java学习笔记-11.运行期间类型鉴定
2024-08-31 16:39:59
1.Class对象的getClasses()方法获取的是该类中所有的公共的内部类,以及从父类,父接口继承来的内部类。getinterfaces()方法返回类继承的所有接口。
import javax.print.attribute.standard.PrinterInfo; interface HasBatteries{}
interface Waterproof{}
interface ShootsThings{} class Toy{
Toy(){}
Toy(int i){}
} class FancyToy extends Toy implements HasBatteries,Waterproof,ShootsThings{
public FancyToy() {
// TODO 自动生成的构造函数存根
super(1);
}
} public class ToyTest {
public static void main(String[] args){
Class class1=null;
try{
class1=class1.forName("FancyToy");
}catch (ClassNotFoundException e) {
// TODO: handle exception
}
printInfo(class1);
Class[] faces=class1.getInterfaces();
for(int i=0;i<faces.length;i++){
printInfo(faces[i]);
}
Class cy=class1.getSuperclass();
Object cObject=null;
try{
cObject=cy.newInstance();
}catch (Exception e) {
// TODO: handle exception
}
printInfo(cObject.getClass()); } static void printInfo(Class cc){
System.out.println("Class name:"+cc.getName()+" is interface? "+cc.isInterface());
} }
2.Class对象的forName()使用时传递的类名classname参数是需要全名的,不能只加类名,比如包名.类名,java.lang.String。
package eleven; import java.lang.reflect.*; class Pig {
public Pig() {
// TODO 自动生成的构造函数存根
} public void T() { } public void A() {
} public void ma() {
}
}
public class ShowMethods {
public static void main(String[] args) {
try {
//Class class1 = Class.forName("eleven.Pig");
Class class1 = Class.forName("java.lang.String");
Method[] methods = class1.getMethods();
Constructor[] constructors = class1.getConstructors();
for (int i = 0; i < methods.length; i++) {
System.out.println(methods[i].toString());
}
for (int i = 0; i < constructors.length; i++) {
System.out.println(constructors[i].toString());
}
} catch (ClassNotFoundException e) {
// TODO: handle exception
System.out.println("No such class:" + e);
}
} }
最新文章
- SQL数据库之DQL
- MVC MemeberShip vs. Asp.net Identity
- C/C++中的声明与定义
- 如何制作u盘启动盘
- Using HiveServer2 - Authentication
- FTP 服务器
- wcf 上传文件报413,404和发布错误
- Python学习笔记006_异常_else_with
- Flexbox 练习和总结
- web中的请求:get 与 post
- 架构师成长之路3.1-Cobber原理及部署
- 反射attr以及模块动态导入
- xe5 android sample 中的 SimpleList 是怎样绑定的 [转]
- IE6,IE7浏览器下 margin 无效的解决方法
- JDK 泛型
- linux文件属性介绍
- KnockoutJs学习笔记(四)
- Android中的树状(tree)列表
- 前端开发之jQuery效果篇
- Mybatis批量删除之Error code 1064, SQL state 42000;