当前位置: 代码迷 >> J2SE >> J2SE幼功<3>
  详细解决方案

J2SE幼功<3>

热度:3946   发布时间:2013-02-25 00:00:00.0
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(); 					}}

?