java学习Class动态加载
来源:互联网 发布:淘宝客服转人工服务 编辑:程序博客网 时间:2024/05/21 10:27
1、通过Class获取类的成员属性
public class MyMain { public static void main(String[] args) throws ClassNotFoundException{ //获取整个类 Class c = Class.forName("java.lang.Integer"); //获取所有的属性? Field[] fs = c.getDeclaredFields(); //定义可变长的字符串,用来存储属性 StringBuffer str = new StringBuffer(); //最外边的public定义 str.append(Modifier.toString(c.getModifiers()) + " class "+ c.getSimpleName() +"{\n"); //里边的每一个属性 for(Field field:fs){ str.append("\t");//空格 str.append(Modifier.toString(field.getModifiers())+" "); str.append(field.getType().getSimpleName() + " "); str.append(field.getName()+";\n"); } str.append("}"); System.out.println(str); }}
执行结果如下:
public final class Integer{ public static final int MIN_VALUE; public static final int MAX_VALUE; public static final Class TYPE; static final char[] digits; static final char[] DigitTens; static final char[] DigitOnes; static final int[] sizeTable; private final int value; public static final int SIZE; public static final int BYTES; private static final long serialVersionUID;}
2、加载类
java中,自动定义加载类,需要继承ClassLoader,然后重写findClass方法;findclass找到目标class文件,然后交给loadClass,最后通过defineClass返回字节码类
loadClass->findClass->defineClass
所以重写findClass
findClass根据传入的名字,打开,读取二进制,然后通过defineClass返回结果
最终得到myClassLoader后,调用接口loadClass
Android为我们从ClassLoader派生出了两个类:DexClassLoader和PathClassLoader
3、动态加载
动态加载,从C++的角度理解看,获取了目标模块的类名称,并且可以通过newInstance来创建新对象,可以直接执行;此对象可以是实现了某个接口类,那么把得到的心对象转换成接口类,可以直接调用
4、声明接口类
接口类可以打包成一个jar文件,直接包含到另一个工程里,可以直接添加接口名字
需要使用哪个接口,只需要把对应的jar包含进来,然后直接输入接口名字即可
引入jar包,可以新建一个lib文件夹,然后把jar文件先导进来,这时还不能使用jar包里的文件;然后右键->BuildPath,在lib中,选中要导入的jar文件,这时才可以使用其中的接口或者类
5、获取Class类型的3中方法
String str1 = "abc";//字符串1 String str2 = "abcd";//字符串2 //三种方式获取Class类型 Class cls1 = str1.getClass(); Class cls2 = str2.getClass(); Class cls3 = String.class; Class cls4 = Class.forName("java.lang.String");
获得Class对象后,即可调用newInstance进行实例化对象,然后直接使用
0 0
- java学习Class动态加载
- java动态加载jar,class
- java class reload 动态加载
- java反射学习笔记(1):Class对象的获取,动态加载类,动态创建对象
- 在Java中动态加载class
- java中动态加载类 Class.forName
- Java中class文件的动态加载
- Java中动态加载class机制实验
- Java 动态加载jar和class文件
- Java学习提要——Class类基础与动态加载类
- 动态加载class,class reload
- 动态加载class文件
- 动态加载class文件
- ios动态加载class
- JAVA学习之JVM加载class
- python 动态加载类,类似java的class.forName
- Java中动态加载jar文件和class文件
- Java 动态加载class 并反射调用方法
- Java程序员必须掌握的排序算法Java实现整合一 :插入排序
- A TPM error (6) occurred attempting to read a pcr value
- 笔记:关于JSON以及解析JSON的两种方法eval()和JSON.parse()
- SQL SERVER 存储过程 获取三个数中的最大值
- linux工具-netcat
- java学习Class动态加载
- java多线程——同步与锁
- CTF【每日一题20160604】
- C语言 整人程序“我是猪”
- C语言 模拟三次密码输入
- C语言 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?打印出来?
- 简述MAC地址与IP地址的关系
- C语言输出数组的三种方法
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能