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。
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()); } }
Atas ialah kandungan terperinci Java怎么在运行期间鉴定数据类型. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!