14章类型信息---class对象
2014-12-11 09:37
351 查看
//: typeinfo/toys/ToyTest.java
// Testing class Class.
package typeinfo.toys;
import static net.mindview.util.Print.*;
interface HasBatteries {}
interface Waterproof {}
interface Shoots {}
class Toy {
Toy() {}
Toy(int i) {}
}
class FancyToy extends Toy
implements HasBatteries, Waterproof, Shoots {
FancyToy() { super(1); }
}
public class ToyTest {
static void printInfo(Class cc) {
print("Class name: " + cc.getName() +//getName方法是带包名的类名
" is interface? [" + cc.isInterface() + "]");//isInterface方法是否是接口
print("Simple name: " + cc.getSimpleName());//getSimpleName方法不带包名的简单类名
print("Canonical name : " + cc.getCanonicalName());
//getCanonicalName方法是产生全限定的类名,也就是带包名的类名,canonical英[kə'nɒnɪk(ə)l]
美[kə'nɑnɪkl]规范化,标准的;
典范的
}
public static void main(String[] args) {
Class c = null;
try {
c = Class.forName("typeinfo.toys.FancyToy");
} catch(ClassNotFoundException e) {
print("Can't find FancyToy");
System.exit(1);
}
printInfo(c);
for(Class face : c.getInterfaces())
printInfo(face);
Class up = c.getSuperclass();
Object obj = null;
try {
// Requires default constructor:
obj = up.newInstance();
} catch(InstantiationException e) {
print("Cannot instantiate");
System.exit(1);
} catch(IllegalAccessException e) {
print("Cannot access");
System.exit(1);
}
printInfo(obj.getClass());
}
}
//如果去掉默认的构造器的话,调用up.newInstance();就会报无法实例化的错
// Testing class Class.
package typeinfo.toys;
import static net.mindview.util.Print.*;
interface HasBatteries {}
interface Waterproof {}
interface Shoots {}
class Toy {
Toy() {}
Toy(int i) {}
}
class FancyToy extends Toy
implements HasBatteries, Waterproof, Shoots {
FancyToy() { super(1); }
}
public class ToyTest {
static void printInfo(Class cc) {
print("Class name: " + cc.getName() +//getName方法是带包名的类名
" is interface? [" + cc.isInterface() + "]");//isInterface方法是否是接口
print("Simple name: " + cc.getSimpleName());//getSimpleName方法不带包名的简单类名
print("Canonical name : " + cc.getCanonicalName());
//getCanonicalName方法是产生全限定的类名,也就是带包名的类名,canonical英[kə'nɒnɪk(ə)l]
美[kə'nɑnɪkl]规范化,标准的;
典范的
}
public static void main(String[] args) {
Class c = null;
try {
c = Class.forName("typeinfo.toys.FancyToy");
} catch(ClassNotFoundException e) {
print("Can't find FancyToy");
System.exit(1);
}
printInfo(c);
for(Class face : c.getInterfaces())
printInfo(face);
Class up = c.getSuperclass();
Object obj = null;
try {
// Requires default constructor:
obj = up.newInstance();
} catch(InstantiationException e) {
print("Cannot instantiate");
System.exit(1);
} catch(IllegalAccessException e) {
print("Cannot access");
System.exit(1);
}
printInfo(obj.getClass());
}
}
//如果去掉默认的构造器的话,调用up.newInstance();就会报无法实例化的错
相关文章推荐
- 14章类型信息--注册工厂---instandceof与Class的等价性--反射
- 深入理解Java类型信息(Class对象)与反射机制
- 14章类型信息-----动态代理-----空对象----接口与类型信息
- 深入理解Java类型信息(Class对象)与反射机制
- java基础-反射2(反射,反射操作对象,Class对象的使用,类型信息的获取)
- java 类型信息(RTTI) 中 Class对象的理解
- 【Java核心技术】类型信息(Class对象 反射 动态代理)
- Java编程思想之类型信息(Class对象)
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- 类型信息之Class对象
- 深入理解Java类型信息(Class对象)与反射机制
- Java 类型信息 —— 获取泛型类型的类对象(.class)
- JAVA类型信息——Class对象
- java基础-反射1(类型信息,Class对象简介,Class对象初始化)
- 类型信息之Class对象
- 深入理解Java类型信息(Class对象)与反射机制
- java类型信息—class对象
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- 先码后看 Class对象(Java类型信息)与反射机制,超详细 侵立删
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)