java - 抛出异常然后调用构造函数?

标签 java constructor

所以我正在构建一个主要供个人使用的测试库,但我有一个问题。

对于 Java,如果您的类中有 2 个或更多构造函数,如果您希望从另一个构造函数中调用一个,那么它必须是您要做的第一件事。这对我来说是有问题的,因为我有以下设置。

public Constructor(TypeA a, TypeB b, TypeC c) {
    if (c.getData() == null) throw new IllegalArgumentException("");
    this(a, b, c.getOtherData());
}

public Constructor(TypeA a, TypeB b, TypeD d) {
    // stuff happens
}

我该怎么做才能避免“构造函数调用必须是构造函数中的第一个语句”错误?

最佳答案

你不能用构造函数做你想做的事。而是使用这样的静态工厂方法:

public static TypeThing buildMyThing(TypeA a, TypeB b, TypeC c) {
    if (c.getData() == null) throw new IllegalArgumentException("");
    return new TypeThing(a, b, c.getOtherData());
}

public Constructor(TypeA a, TypeB b, TypeD d) {
    // stuff happens
}

关于java - 抛出异常然后调用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31385110/

相关文章:

java - Azure 存储 TableQuery 结果到 ArrayList 性能 (Java)

java - 为什么 Properties.list 在打印前复制表格?

PHP - 扩展的 __construct

Javascript - 为什么没有递归?

c++ - Dlib:如何初始化一个忽略标志设置为 1 的 mmod_rect?

C++ new() 在调用 ctor 之前崩溃

java - "Cannot find symbol"或 "Cannot resolve symbol"错误是什么意思?

java - For 循环 读取 char 时加 3

java - 为什么我们不能在方法内部声明私有(private)局部内部类?

c++ - 析构函数上的段错误