package typeinfo.toys;
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) {
System.out.println("Class name: " + cc.getName() + " is interface? ["
+ cc.isInterface() + "]");
//getSimpleName()和getCanonicalName()分别产生不包含包名的类名和全限定的类名
System.out.println("Simple name: " + cc.getSimpleName());
System.out.println("CanonicalName: " + cc.getCanonicalName());
}
public static void main(String[] args) {
Class c = null;
try{
c = Class.forName("typeinfo.toys.FancyToy");
}catch(ClassNotFoundException e){
System.out.println("Can't find FancyToy");
System.exit(1);
}
printInfo(c);
//getInterfaces()方法返回的是Class对象
for(Class face : c.getInterfaces())
printInfo(face);
Class up = c.getSuperclass();
Object obj = null;
try{
//Requires default constructor:
obj = up.newInstance();
}catch(InstantiationException e){ //Instantiation 实例化
System.out.println("Cannot access");
System.exit(1);
}catch(IllegalAccessException e){ //Illegal 非法的
System.out.println("Cannot access");
System.exit(1);
}
printInfo(obj.getClass());
}
}
/*Output:
Class name: typeinfo.toys.FancyToy is interface? [false]
Simple name: FancyToy
CanonicalName: typeinfo.toys.FancyToy
Class name: typeinfo.toys.HasBatteries is interface? [true]
Simple name: HasBatteries
CanonicalName: typeinfo.toys.HasBatteries
Class name: typeinfo.toys.Waterproof is interface? [true]
Simple name: Waterproof
CanonicalName: typeinfo.toys.Waterproof
Class name: typeinfo.toys.Shoots is interface? [true]
Simple name: Shoots
CanonicalName: typeinfo.toys.Shoots
Class name: typeinfo.toys.Toy is interface? [false]
Simple name: Toy
CanonicalName: typeinfo.toys.Toy
*/
111
最新推荐文章于 2022-01-22 23:04:26 发布