2013-08-20 116 views
3

請問有什麼辦法可以做到這一點:獲取從類存儲類變量靜態變量

Class cls = MyClass.class; 
int variable = cls.staticVariable; 

Class MyClass { 
    public static int staticVariable = 5; 
} 

類CLS將始終包含具有可變staticVariable一類,但它並不總是相同類。希望你能理解。

+0

你爲什麼不試試看看自己? –

+0

@AniketThakur那不行,我只是爲了解釋我的問題。 – lawls

+0

好的沒有得到你的問題。嘗試反射API。 http://docs.oracle.com/javase/tutorial/reflect/ –

回答

4

這是一個簡短的工作示例,通過反射展示了這個概念。

public class ReflectionStatic { 

    public static int staticVariable = 5; 

    public static void main(String[] args) throws IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException { 
     Class<ReflectionStatic> clazz = ReflectionStatic.class; 
     int value = clazz.getField("staticVariable").getInt(null); 
     System.out.println(value); 
    } 
} 
2

是的,但只能通過反射API。

Field f = cls.getField("staticVariable"); 
int variable = f.getInt(null); 

這裏會有很多例外。