
本文共 11975 字,大约阅读时间需要 39 分钟。
������������
���������������������������������������������C#���Java������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������JVM������������������������
���������������������
2.1 ���������
���������������������������������������������������������JVM������������JVM������������������������������������������������������������������������������ClassLoader���������������������������������������
������������������������������������������������������������������������������
������������������������class���������
���JAR������������class���������
������������������class���������
���������java������������������������������������
���������������������������������������������������������������������������������������������������
2.2 ���������
���������������������������������������������������������Class������������������������������������������������������������������������������������JRE������������������������������������
������������������������������������������������������������������������������������������������
������������������������������������������������������������������������
���������������������������������������������������������������������������
2.3 ���������������
������������������������������������������������������������������������������������������������������������������������
������������������������������������
������������������������������������������������������
JVM���������������������������
������������������������������������������������������������������������������
���������������������������������������������������������������������������������
������������������������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������?
������������������������������������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���������������
���������Class���������������������������������������������������8������
���������������������������������������������4������������������������������������������������3������
������������������������������������������������������������������8������������������5������
������������������������������������������������������������������8������������������7������
������������������������������Class������������������������6������������������������7������
������������������Class������������������8������
������ClassNotFoundException���������
���������������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���������������������
������Class���������forName(String name)������������������������������������������������������������
������������������class���������������������������������Class���������
���������������������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 { Classclazz = 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()������������������
Classclazz = 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(); ClasspersonClass = 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()); }}
������������������������������������������������������
发表评论
最新留言
关于作者
