日期:2014-05-20  浏览次数:20759 次

反射问题
Java code

class Test11 {
    static final int staticFinal = 11;

    void show() {
        System.out.println(this.getClass().getCanonicalName());
    }
}

public class Temp {
    public static void main(String[] args) {
        Test11 test = new Test11();
        test.show();
        
        Class test1=null;
        try {
            test1=Class.forName("a10_2.Test11");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        [color=#FF0000]test1????[/color]
    }
}



为什么看书上在红色的 test1那里可以访问staticfinal 变量,而在我这不行呢 ,百思不得其解啊,求教了

------解决方案--------------------
你要确保a10_2文件目录中有一个Test11.class
------解决方案--------------------
在顶上加上
Java code
package a10_2;

------解决方案--------------------
http://happyran.zbpifa.com
http://007ej.com/user.asp
------解决方案--------------------
这问题和反射有关吗
------解决方案--------------------
Class test1=null;
try {
test1=Class.forName("a10_2.Test11");//这里反射
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如果你在这里直接通过test1访问成员是访问不到了,因为没有具体实例对象,也就没有实例成员
------解决方案--------------------
用test1.getDeclaredField("staticFinal ").getInt();应该可以得到吧,可以试试...