在哪种情况下,obj!=null在java中抛出java.lang.NullPointerException?

在哪种情况下,obj!=null在java中抛出java.lang.NullPointerException?,java,nullpointerexception,Java,Nullpointerexception,我们有一个3年多的代码,它一直运行良好,直到现在 根据注释添加模拟代码,这导致空指针异常 public class TestMain { public static void main(String[] args) throws Exception{ //List<MTMStagingRequest> request=init(); List<String> names = new ArrayList<>();

我们有一个3年多的代码,它一直运行良好,直到现在

根据注释添加模拟代码,这导致空指针异常

public class TestMain {

    public static void main(String[] args) throws Exception{

        //List<MTMStagingRequest> request=init();
        List<String> names = new ArrayList<>();
        names = null;
        if(names != null){ // It throws NullPointerException
            System.out.println("He he");
        }else{
            System.out.println("No No");
        }
} 
公共类TestMain{
公共静态void main(字符串[]args)引发异常{
//列表请求=init();
列表名称=新的ArrayList();
名称=空;
如果(names!=null){//则抛出NullPointerException
System.out.println(“He-He”);
}否则{
系统输出打印项次(“否”);
}
} 

感谢您的帮助。

此代码不会抛出NPE,除非它不是在某个自定义JVM上运行的。在您的情况下,可能您没有重建项目,现在看到的是实际运行的项目。请尝试先清理并重建项目


但总的来说,您所展示的代码不会抛出NPE。

到目前为止,您发布的不是实际的java代码。请将您的问题包含在相关代码中(最好是a)。总而言之,这不应该引发任何问题。这打印出没有101%的把握。它可以引发自定义JVM或操作字节码或AOP-一般来说-在没有执行代码的情况下。此外,它是不可复制的,因为输出上没有NoNo。再次,。请包括堆栈跟踪。我确信根本原因是什么还有。在Remtoe调试模式下,它在代码中出现了相同的位置并出现异常…我尝试从Jenkins重新构建,但仍然失败了…我可以检查的任何东西…Baaah它在远程调试中-然后你不知道实际执行的代码是什么。甚至调试程序评估也可以抛出…可能你用于调试的源与这并不是在代码中抛出NPE的证据。调试可以有不同的行。当然,源代码是不同步的。