2

重複の可能性:
Java の null 参照の静的フィールド

私はJavaが初めてです。オブジェクトが指している場合、そのオブジェクトに対して何らかの操作を実行しようとすると、JVM によって Nullpointer 例外がスローされることがわかっています。しかし、私の場合、Nullpointer 例外はありません。助けてください。以下は私のコードです

public class Employee
{

     public static String empName = "John"

     public static void main(String args[])
     {
           Employee emp = new Employee();    
           emp = null;
           System.out.println(emp.empName);
      }   
}

emp オブジェクトが null を指していても、Johnを出力として出力します。しかし、nullpointer 例外が発生することを期待しています。

4

3 に答える 3

5

欄がございますのでstatic
あなたの場合emp.empNameに等しいEmployee.empName

于 2012-12-21T15:26:22.980 に答える
3

静的変数にアクセスしているため、参照が null を参照している場合、NPE は取得されません。これはclass、インスタンスではなく静的フィールドがバインドされているためです。

したがって、静的変数の場合: -

Employee emp = null;
emp.empName;  // This is evaluated as `Employee.empName;`

したがって、参照型のみが使用されます。その参照が を指しているnullか、サブクラス オブジェクトを指しているかに関係なく。

于 2012-12-21T15:27:16.203 に答える
0

静的empNameであるため、呼び出しはバイトコードになります。したがって、NPE はありません。Employee.empName

元のコード: System.out.println(emp.empName);

バイトコード: GETSTATIC java/lang/System.out : Ljava/io/PrintStream; GETSTATIC oops/Employee.empName : Ljava/lang/String;

于 2012-12-21T15:27:57.477 に答える