Java核心技术梳理-类加载机制与反射
发布日期:2021-05-09 09:07:33 浏览次数:13 分类:博客文章

本文共 11975 字,大约阅读时间需要 39 分钟。

������������

���������������������������������������������C#���Java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������JVM������������������������

���������������������

������������������������������������������������������������������������������������������������������������JVM������������������������������������������������������������������������������

2.1 ���������

���������������������������������������������������������JVM������������JVM������������������������������������������������������������������������������ClassLoader���������������������������������������

������������������������������������������������������������������������������

  • ������������������������class���������

  • ���JAR������������class���������

  • ������������������class���������

  • ���������java������������������������������������

���������������������������������������������������������������������������������������������������

2.2 ���������

���������������������������������������������������������Class������������������������������������������������������������������������������������JRE������������������������������������

  1. ������������������������������������������������������������������������������������������������

  2. ������������������������������������������������������������������������

  3. ���������������������������������������������������������������������������

2.3 ���������������

������������������������������������������������������������������������������������������������������������������������

  • ������������������������������������

  • ������������������������������������������������������

JVM���������������������������

  1. ������������������������������������������������������������������������������

  2. ���������������������������������������������������������������������������������

  3. ������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������?

  • ������������������������������������new���������������������������������������������������������������������

  • ���������������������������������

  • ���������������������������������������

  • ������������������������������������������������������������java.jang.class���������

  • ������������������������������

  • ������java.exe������������������������������

������ ������������

������������������������.class���������������������������������������������java.lang.Class������������������������������������JVM���������������������������������������������������������������������������JVM���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

3.1 ���������������

���JVM���������������������������������������������������������������������������������

  • Bootstrap ClassLoader���������������������������������Java���������������������JVM������������������

  • Extension ClassLoader������������������������������������JRE������������������%JAVA_HOME%/jre/lib/ext������JAR���������������

  • System ClassLoader���������������������������������JVM���������������������Java���������-classpath���������java.class.path���������������CLASSPATH���������������������JAR������������������

JVM������������������������������������

  • ������������������������������������������������������������Class���������class������������������������������Class������������������������������������������������������������������������������������������

  • ���������������������������������������������������Class������������������������������������������������������������������������������������������������

  • ���������������������������������Class���������������������������������������������������������������������JVM������������������������������

������������������Class���������������

  1. ���������Class���������������������������������������������������8������

  2. ���������������������������������������������4������������������������������������������������3������

  3. ������������������������������������������������������������������8������������������5������

  4. ������������������������������������������������������������������8������������������7������

  5. ������������������������������Class������������������������6������������������������7������

  6. ������������������Class������������������8������

  7. ������ClassNotFoundException���������

  8. ���������������java.lang.Class���������

3.2 ���������������������

JVM������������������������������������������������������ClassLoader������������������������������������ClassLoader������������������������������������������������������������������ClassLoader������������������������

  • loadClass(String name, boolean resolve)���������������ClassLoader���������������������������������������������

  • findClass(String name)������������������������������������

������������findClass(String name)���������findClass()���������������������������������������������������������������������������������������ClassLoader���������������������������Class<?> defineClass(String name, byte[] b, int off, int len)���������������������������������������������������������������������������������������Class������������������������������final���������������������������

������������

������������������������������������������������������������������������������������������������������������Class���������������������������������������������JVM���������������������������������������Class���������������������

  1. ������Class���������forName(String name)������������������������������������������������������������

  2. ������������������class���������������������������������Class���������

  3. ���������������������getClass()���������

���������������������������������������������������������������Class������������������������������������������������������������

4.1 ������Class������

������������������Class���������������������������Class������������������Class������������������������������������Class���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������

  • Constructor<?>[] getConstructors()������������Class������������������������public���������������

  • Constructor<?>[] getDeclaredConstructors()������������Class������������������������������������������������������

  • Constructor<T> getConstructor(Class<?>... parameterTypes)������������Class������������������������������������������������public���������������

  • Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)������������Class������������������������������������������������������������,������������������

���������������Declared���������������������������������������������������������������������

���������

  • Method getMethod(String name, Class<?>... parameterTypes)������������Class������������������������������������������������public���������

  • Method[] getMethods()������������Class������������������������public������

���������������

  • Field[] getFields()������������Class������������������������public���������������

  • Field[] getField(String name)������������Class������������������������������������public������������

���������

  • Annotation[] getAnnotations()������������������Class������������������������������

  • <A extends Annotation> A getAnnotation(Class<A> annotationClass)������������Class������������������������������������������������������������������������������ null���

������������

  • Class<?>[] getDeclaredClasses()������������Class���������������������������������������������

������������

  • Class<?> getDeclaringClass()������������Class���������������������������������������������

���������

  • Class<?>[] getInterfaces()������������Class������������������������������������������

���������������

  • int getModifiers()������������������������������������������������������int���������������������

  • Package getPackage()������������������������

  • String getName()������������Class���������������������������

  • String getSimpleName()������������Class���������������������������

  • boolean isAnnotation()���������Class���������������������������������������

  • boolean isArray()���Class������������������������������

������������������������������������������������������

public class ClassTest {    private ClassTest() {    }    public ClassTest(String name) {        System.out.println("������������������������");    }    public void info() {        System.out.println("������������������");    }    public void info(String name) {        System.out.println("������������������");    }    //���������    class inner {    }    public static void main(String[] args) throws NoSuchMethodException {        Class
clazz = ClassTest.class; Constructor
[] constructors = clazz.getConstructors(); System.out.println("������public������������������"); for (Constructor constructor : constructors) { System.out.println(constructor); } Constructor
[] pubConstructors = clazz.getDeclaredConstructors(); System.out.println("������������������������"); for (Constructor constructor : pubConstructors) { System.out.println(constructor); } Method[] methods = clazz.getMethods(); System.out.println("������public������������"); for (Method method : methods) { System.out.println(method); } System.out.println("���������info,���������������String������������������" + clazz.getMethod("info", String.class)); }}

4.2 ���������������������

4.2.1 ������������

������������������������������������������������������newInstance()������������������������������������������������������������������������������������������Constructor������������������Constructor������newInstance()������������������

Class
clazz = ClassTest.class;ClassTest classTest = clazz.newInstance();classTest.info();Constructor
constructor = clazz.getConstructor(String.class);ClassTest class2 = constructor.newInstance("������");class2.info();

4.2.2 ������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������getMethod���������������������������invoke������������������������

Class
aClass = Class.forName("com.yuanqinnan.api.reflect.ClassTest");//���������������Object object = aClass.newInstance();//���������������Method info = aClass.getMethod("info", String.class);//������������info.invoke(object, "������");

4.2.3 ������������������

���������������������������������getXXX()���������setXXX(XXX)������������������������������������������������������������������������������������������������������������������

public class Person {    private int age;    private String name;    public String toString() {        return name + ":" + age;    }    public static void main(String[] args) throws Exception {        Person p = new Person();        Class
personClass = Person.class; Field name = personClass.getDeclaredField("name"); //������������������ name.setAccessible(true); name.set(p, "������"); Field age = personClass.getDeclaredField("age"); age.setAccessible(true); age.set(p, 20); System.out.println(p.toString()); }}

������������������������������������������������������

上一篇:多线程与高并发(一)多线程基础
下一篇:Java核心技术梳理-IO

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月29日 06时34分49秒