2017-07-11 3 views
1

'null 'に初期化されている'相違変数 'を使用して静的変数を使用して静的変数にアクセスできるかどうかを確認しようとしています推奨されません)。しかし、私はそのメソッドには全くアクセスできないようです。何が間違っているのか分からないようです。静的メソッドにはJavaの参照変数からアクセスできません

class Emp { 

static int bank_vault; 

static int getBankVaultValue(){ 
    return bank_vault; 
} 
} 

public class Office { 

public static void main(String[] args) 
{ 
    Emp emp = null; 

    System.out.println(emp.); // Here I don't get getBankVaultValue method option 
} 
} 
+1

コンパイラがこの自動補完を提案していないということは、あなたがそれを行うことができないということを意味するものではありません。おそらくそれをしてはならないということです。 – Eran

+1

あなたのIDEは自動補完オプションとして提供していないということです。コンパイラとは関係ありません。 'NullPointerException'を投げずに**コンパイルして実行します。 –

+1

はコンパイルエラーなしで完璧に正常に動作するはずです。IDEの問題のようです.Eclipseはこのような問題を作成しません –

答えて

2

あなたのIDEです。あなたはそこにemp.getBankVaultValue()を使用することができ、それはうまくいくでしょう。そのインスタンス参照を介して静的メソッドにアクセスすることができます(nullですが、getBankVaultValueは静的であるため参照解除されません)。静的メソッドは静的変数にアクセスできます。しかし、あなたが言ったように、インスタンス参照を介して静的メンバーにアクセスすることは悪い考えであるため、あなたのIDEはあなたにその提案を提供していません。コードを見ている人には、インスタンスメンバーにアクセスしているようです。 (少なくとも、私はそれがIDEがそれをしていない理由だと推測します)。

あなたはそれが悪い考えであり、正しく行う方法を知っていますが、他の誰かが質問/それにアクセスするための正しい方法は、例えば、クラス名を経由して次のようになります。に動作しますが、それは、構文の癖だ

System.out.println(Emp.getBankVaultValue()); 

その他(emp.getBankVaultValue())。

関連する問題