zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    
    }
  • 相关阅读:
    OGNL与值栈
    Struts2的数据封装
    Struts2页面配置和访问servlet API
    Struts2入门介绍(二)
    Struts2 入门介绍(一)
    Hibernate批量抓取
    Problem G: STL——整理唱片(list的使用)
    STL详细介绍(更新中~~~)
    Problem E: 数量的类模板
    CF: Long Number
  • 原文地址:https://www.cnblogs.com/junshijie/p/7059870.html
Copyright © 2011-2022 走看看