//TesDynamicLoading.java
public class TestDynamicLoading {
public static void main(String[] args) {
new A();
System.out.println("********************************************");
new B();
new C();
new C();
new D(1);
new D(1);
}
}
class A{
}
class B{
}
class C{
static{//类加载时被执行
System.out.println("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC");
}
}
class D{
D(int i){
}
{//为对象分配内存时执行
System.out.println("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
}
}
//TestJDKClassloader.java
public class TestJDKClassLoader {
public static void main(String[] args) {
/*System.out.println(String.class.getClassLoader());
System.out.println(com.sun.crypto.provider.DESKeyFactory.class
.getClassLoader().getClass().getName());
System.out.println(TestJDKClassLoader.class.getClassLoader().getClass()
.getName());
System.out.println(ClassLoader.getSystemClassLoader().getClass().getName());*/
ClassLoader c=TestJDKClassLoader.class.getClassLoader();
while(c!=null){
System.out.println(c.getClass().getName());
c=c.getParent();
}
}
}
//TestReflection.java
import java.lang.reflect.Method;
public class TestReflection {
public static void main(String[] args) throws Exception {
String str = "T";
Class c = Class.forName(str);
Object o = c.newInstance();
Method[] methods = c.getMethods();
for (Method m : methods) {
if (m.getName().equals("mm")) {
m.invoke(o, new Object[] {});
}
if (m.getName().equals("m1")) {
m.invoke(o, 1, 2);
for(Class parameterTypes:m.getParameterTypes()){
System.out.println(parameterTypes.getName());
}
}
if(m.getName().equals("getS")){
Class returnType = m.getReturnType();
System.out.println(returnType.getName());
}
}
}
}
class T {
static {
System.out.println("T is Loading !");
}
public T() {
System.out.println("Constructor Called !");
}
int i;
String s;
public void mm() {
System.out.println("m invoked !");
}
public void m1(int i, int j) {
this.i = i + j;
System.out.println(" i = " + this.i);
}
public String getS() {
return s;
}
}