首页 > 代码库 > Java学习笔记-11.运行期间类型鉴定

Java学习笔记-11.运行期间类型鉴定

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);        }    }}

Java学习笔记-11.运行期间类型鉴定