美文网首页
★12.类型信息

★12.类型信息

作者: iDragonfly | 来源:发表于2017-07-03 19:54 被阅读0次

Class

  • 每个类都有Class对象。
  • 获取Class对象的方式有:
    • 类名.class
    • 对象.getClass()
    • Class.forName("类名")
  • Class的方法有:
    • getName():返回类名。
    • getSimpleName():返回类名。
    • getCanonicalName():返回类名。
    • isInterface():判断是否为接口。
    • getInterfaces():返回该类的所有接口的Class对象。
    • isInstance(obj):接受一个参数,判断是否是obj类对象。
    • isAssignableFrom(cls):接受一个Class类型参数,检查是否能用cls赋值。
    • getSuperclass():返回基类的Class对象。
    • newInstance():创建Class对应的对象,但此对象的类型为Object(除非把Class具体化,如Class<A>,这时会返回A类型对象),此类必须具有默认构造器。
    • getMethods():获取此Class对象记录的类的所有公共方法,返回Method对象数组。
    • getConstructors():获取此Class对象记录的类的所有构造器,返回Constructor对象数组。
    • cast():转型。
  • 向下类型转换的询问操作:if(X instanceof Dog)代表询问X是否是Dog类型。

Method

  • Method:方法对象,可以用Class对象获取。

Constructor

  • Constructor:构造器对象,可以用Class对象获取。

动态代理

class Proxyer implements InvocationHandler {
    private Object obj;

    Proxyer(Object obj) {
        this.obj = obj;
    }

    // 重新实现InvocationHandler以完成代理,参数为:对象,方法,参数
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // 此处进行需要代理的工作
        return method.invoke(obj, args);
    }
}

interface I {
    void doSomething();
}

class A implements I {
    public void doSomething() {
        System.out.println("doSomething");
    }
}

class SimpleDynamicProxy {
    public static void main(String[] args) {
        // 载入接口加载器,接口的Class对象数组,代理类对象
        I proxy = (I) Proxy.newProxyInstance(
                I.class.getClassLoader(),
                new Class[]{I.class},
                new Proxyer(new A()));
        proxy.doSomething();
    }
}

相关文章

  • ★12.类型信息

    Class 每个类都有Class对象。 获取Class对象的方式有:类名.class对象.getClass()Cl...

  • 12. 信息增益

    信息增益gain 此时的gain(outlook) = 0.940 - 0.694 = 0.246, 作为进步的幅...

  • 类型信息

    RTTI# 这个类型在编译时必须已知,这样才能用RTTI识别它,并利用这些信息做一些有用的事。Class.forN...

  • 类型信息

    运行时的类型信息使得你可以在程序运行时发现和使用类型信息 为什么需要RTTI(Runtime Type Infor...

  • 12.集合类型-Set

    出自:http://www.xiaoboswift.com/course/54

  • 12. 数组数据类型支持

    12. 数组数据类型支持 概述 从Pony 0.7.7.7版本开始,我们为PostgreSQL、Cockroach...

  • 剑指 offer:12、数值的整数次方

    12. 数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求b...

  • 类型信息-01

    运行时类型信息1.RTTI,它假设我们在编译时已经知道了所有的类型信息。使用rtti可以查询基类引用所指向的对象的...

  • java类型信息

    运行时类型信息使得你能够在程序运行时发现和使用类型信息;java在运行中识别类型信息主要有两类,一是从传统的RTT...

  • Java 类型信息

    RTTI(Run-time Type Identification) Class对象,JVM,ClassLoade...

网友评论

      本文标题:★12.类型信息

      本文链接:https://www.haomeiwen.com/subject/louzcxtx.html