相关疑难解决方法(0)

构造函数可以返回一个null对象吗?

在查看一些旧代码时,我遇到了这个宝石:

MyObject o = new MyObject("parameter");
if (o == null) o = new MyObject("fallback parameter");
Run Code Online (Sandbox Code Playgroud)

第二行在Eclipse中标记为死代码,我理解为什么.似乎没有显式抛出任何异常,并且MyObject构造函数不可能抛出任何类型的异常(例如NullPointerExceptions).

我的问题是为什么有空检查?以前是否可以在旧版本的Java中使构造函数返回null?或者这只是无用的死代码?

java null constructor

74
推荐指数
6
解决办法
4万
查看次数

通过构造函数抛出异常

假设我有以下代码:

public class Conf{    
  public Conf(String szPath) throws IOException, ConfErrorException{
      ...
  }
  public void someMethod(){
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我想以这种方式实例化对象:

Conf configuration = new Conf("/etc/myapp/myconf.conf");
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因,构造函数抛出任何定义的异常,那么是否会创建对象?
我的意思是,我仍然可以访问其中的方法,例如,如下面的代码?

Conf configuration;
try{
   configuration = new Conf("/etc/myapp/myconf.conf");
}catch(IOException|ConfErrorException e){
   //Suppose we entered here
   configuration.someMethod();
}
Run Code Online (Sandbox Code Playgroud)

java exception

2
推荐指数
2
解决办法
3596
查看次数

标签 统计

java ×2

constructor ×1

exception ×1

null ×1