• 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);
            }
        }
    
    }
  • 相关阅读:
    非985、211毕业,却选择了拒接百度Android开发岗offer?
    第五章:Redis持久化-RDB持久化
    第一章:初识Redis
    第四章:虚拟机监控工具
    第三章:内存分配与回收策略
    第三章:垃圾回收器-参数总结
    第一章:Nginx安装
    第一章:Nginx介绍
    第三章:进程管理-进程描述符及任务结构
    4、跃进表
  • 原文地址:https://www.cnblogs.com/junshijie/p/7059870.html
Copyright © 2020-2023  润新知