构造函数抛出异常嵌套异常是 java.lang.nullpointerexception

Posted

技术标签:

【中文标题】构造函数抛出异常嵌套异常是 java.lang.nullpointerexception【英文标题】:constructor threw exception nested exception is java.lang.nullpointerexception 【发布时间】:2017-11-07 08:57:44 【问题描述】:

你好,下面是场景

@Component   
public class DateFormatter() 

public String DateToString() 
   //some Logic; 
      
    

public class DataProvider

@Resource("dateFormatter")
private DateFormatter dateFormatter;

public void test()
  Date date = new Date();


    String formattedDate = this.dateFormatter(date);

  system.out.print("Formatted Date is :" + formattedDate);

是我在控制台上看到的

【问题讨论】:

没有堆栈跟踪吗?它应该告诉您哪个构造函数指向了空指针。此外,您在此处发布的代码均不包含可能为空指针的构造函数... public class DateFormatter() 首先是不可编译的 请格式化您的代码,使其清晰易读。 正是我对 DateFormatter 给我的空指针感到困惑 请不要发布草率的代码。如果您需要准确的帮助,请在您的问题和代码中保持准确。 【参考方案1】:

this.dateFormatter(date); 正在调用 DateFormatter 和 dateFormatter 并且它没有这样的方法,因为您的示例中的 dateFormatter 不是方法。

public String DateToString(Date date) 
    //some Logic;
    return "";

您不能在参数中调用 DateToString 方法,并且不要在方法声明中提供它。

public class DataProvider

        private DateFormatter dateFormatter;

        public void test()
            Date date = new Date();

            DateFormatter dateFormatter = new DateFormatter();
            String formattedDate = dateFormatter.DateToString(date);

            System.out.print("Formatted Date is :" + formattedDate);
    

或者你可以这样做: 公共类 DataProvider

    private DateFormatter dateFormatter;

    public DataProvider(DateFormatter dateFormatter) 
        this.dateFormatter = dateFormatter;
    

    public void test()
        Date date = new Date();

        String formattedDate = dateFormatter.DateToString(date);

        System.out.print("Formatted Date is :" + formattedDate);

您必须创建对象的实例才能调用方法。

【讨论】:

对不起是this.dateFormatter.DateToString(date)

以上是关于构造函数抛出异常嵌套异常是 java.lang.nullpointerexception的主要内容,如果未能解决你的问题,请参考以下文章

C++的构造函数可以抛出异常么

构造函数析构函数抛出异常的问题

为啥在构造函数中抛出异常会导致空引用?

dotnet C# 如果在构造函数抛出异常 析构函数是否会执行

C++:抛出异常会调用复制构造函数?

从 .* 的构造函数抛出的 boost 正则表达式异常