2012-04-16 8 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を使用しています。 –

答えて

9

そうではありません。 getClass()Class<?>を返し、iClassのメンバーではありません。 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; 
    } 
} 
関連する問題