1. 程式人生 > >Java學習筆記-11.運行期間類型鑒定

Java學習筆記-11.運行期間類型鑒定

hand 運行期 以及 類繼承 string pig show 內部類 eve

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.運行期間類型鑒定