读书人

J2SE幼功lt;3gt

发布时间: 2012-10-18 13:46:55 作者: rapoo

J2SE基本功<3>

public class Test1 {public void func() {System.out.println("func");}public static void main(String args[]) throws Exception {Object obj = new Test1();// 下面是能通过的((Test1) obj).getClass().newInstance().func();// 下面是不能通过的下面这两行代码之所以无法通过编译      /*  Class c = ((Test)obj).getClass();           c.newInstance().func();         是因为((Test)obj).getClass()返回的为对象类型为Class<? extends Test>,但是我们在第一行将结果强制转换成了Class,          然后再去调用Class的newInstance方法,而不是去调用Class<Test>的newInstance方法,          编译器当然不再认为Class的newInstance方法返回的对象为Test了。      *//* * Class c=((Test1)obj).getClass();  * c.newInstance().func(); */Class<? extends Test1> c = ((Test1)obj).getClass(); c.newInstance().func(); }}

?

读书人网 >J2SE开发

热点推荐