码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-06-21 16:03:48      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:for   ref   object   dex   自动   自动生成   log   except   reflect   

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.运行期间类型鉴定

标签:for   ref   object   dex   自动   自动生成   log   except   reflect   

原文地址:http://www.cnblogs.com/junshijie/p/7059870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!