2012-05-02 20 views
5

を考えると、次のプログラム:Javaのグローバル名前空間にアクセス

class A { 
    static int java = 42; 
    static int System = -1; 

    public static void main(String[] args) { 
     java.lang.System.out.println("Foo"); 
    } 
} 

これをコンパイルするには、私に「intは間接参照することはできません」というエラーになります。その理由は明らかですが、このような状況をどのように処理すればよいでしょうか。特に、コード生成シナリオでは、生成されたコードとどのようなユーザーコードが絡み合っているかを知ることができません。

C#では "java.lang"の前に "global ::"名前空間指定子を使用しますが、Javaではどうしますか?

+0

これは私が決して考えなかったものです! – adarshr

答えて

3

Javaの一般的なソリューションはありません。我々はこの一緒に暮らす方法は、コードを生成するときに、パッケージ/フィールド名からクラス名を区別する規則、および

  • は、そのクラス名を持つ静的VARを修飾命名

    1. 尊重することです。
  • +0

    これはどのように手伝ってくれるのですか? Eyvindは彼の例での通常の命名規則に従い、フィールドが静的であるかどうかは関係ありません。javaパッケージへのアクセスよりも優先されます。 – jarnbjo

    +0

    私が言ったように、「Javaの一般的な解決法はありません」。 –

    +0

    それは私が恐れていたものでした。実用主義、ここに来る! – Eyvind