2012-04-16 89 views
0

考虑以下代码:可以使用getClass()方法来访问静态变量吗?

class A { 
    static int i=3; 
} 

public class TT extends A { 
    public static void main(String[] args) { 
     System.out.println(new A().getClass().i); 
    } 
} 

能否getClass()方法被用来访问在这种情况下静态变量?

+2

只需使用A.I以获取静态成员。 – 2012-04-16 18:51:02

回答

9

不是那样的,没有。 getClass()返回Class<?>,和i不是Class成员。你可以使用getClass()其次是反射获取字段的值,但它不是完全清楚你想要什么在这里实现 - 当在例子中,你已经给了(这是所有我们已经得到了通过去)简单地使用A.i会更简单和更清晰。

0

也许这代码回答你的问题:

package com.cc.test; 
import java.lang.reflect.Field; 
public class TestMain { 

    public static void main(String[] args) throws Exception { 
     Class theClass = Class.forName("com.cc.test.TestMain$MyClass"); 
     Field theField = theClass.getField("myField"); 
     int theValue = theField.getInt(null); // null only works if myField is static 
     System.out.println(theValue); // prints 99 
    } 

    private static class MyClass { 
     public static int myField = 99; 
    } 
} 
相关问题