zoukankan      html  css  js  c++  java
  • java反射

    class类的使用

    1.静态的成员变量,基本类型不是对象。

    问题来了,对象是谁的对象呢,,,答案是Class

    任何一个类都是Class的实例对象,这个实例对象有三种有三种表达方式

    Class c1 = Foo.class;

    Class c2 = foo.getClass();

    Class c3 = Class.forName("Foo");

    可以通过类类型创建对象创建实例,a.newInstance();//需要有无参数的构造方法

    new方法是静态加载类,Class c3 = Class.forName("Foo")可以动态加载类

    方法的反射

    方法也是对象,是java.lang.reflect.Method的实例对象

    成员变量的反射

    成员变量也是对象,是java.lang.reflect.Field的实例对象

    构造函数的反射

    构造函数也是对象,是java.lang.reflect.Contructor的实例对象

    Java类加载机制

    java类加载机制和反射参考:https://www.cnblogs.com/ITtangtang/p/3978102.html

    Java集合泛型的本质

    Java集合泛型是在编译的时候防止类型出错的,编译之后就没有泛型的。反射可以绕过编译,验证这个理论。

     1 public class MethodDemo4 {
     2     public static void main(String[] args) {
     3         ArrayList list = new ArrayList();
     4         ArrayList<String> list1 = new ArrayList<String>();
     5         list1.add("hello");
     6         Class c1 = list.getClass();
     7         Class c2 = list1.getClass();
     8         System.out.println(c1 == c2);//true
     9         try {
    10             Method m = c2.getMethod("add", Object.class);
    11             m.invoke(list1, 20);
    12             System.out.println(list1.size());
    13             System.out.println(list1);
    14             /*for (String string : list1) {
    15                 System.out.println(string);
    16             }*/
    17         } catch (Exception e) {
    18             e.printStackTrace();
    19         }
    20     }
    21 }
    View Code
    zhumiao
  • 相关阅读:
    Configure文件学习
    实用文章:常用开源协议详细解析
    openwrt的sysupgrade和factory固件的区别
    Linux块设备和字符设备
    eclipse代码补全按键修改成Tab
    Hadoop环境搭载
    比特币中难度调整
    共识机制
    比特币交易本质--UTXO(Unspent Transaction Output)
    多重签名
  • 原文地址:https://www.cnblogs.com/zhumiao/p/9487230.html
Copyright © 2011-2022 走看看