Java 反射机制 练习代码

来源:互联网 发布:网络赚钱渠道 编辑:程序博客网 时间:2024/06/05 04:14
//TesDynamicLoading.javapublic 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.javapublic 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.javaimport 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;}}


原创粉丝点击