如何使用数组列表的不同子类型重载构造函数?

Smu*_*Bug 0 java generics constructor arraylist

我想使用单独的构造函数独立初始化几个不同的 ArrayList。除了默认值之外,我可以仅使用辅助构造函数轻松地实现我需要的类,但为了了解为什么这不起作用,我很欣赏一些见解。

public class MultiConstruct
{
ArrayList<Integer> first;
ArrayList<Float> second;

public MultiConstruct(){};

public MultiConstruct(ArrayList<Integer> f){
    this();
    this.first = f;
    System.out.println("MultiConstruct version one handled successfully...");
    System.out.println(" ");
}

public MultiConstruct(ArrayList<Float> s){
    this();
    this.second = s;
    System.out.println("MultiConstruct version two handled successfully...");
    System.out.println(" ");
    }
}
Run Code Online (Sandbox Code Playgroud)

Rod*_*mes 5

您可以使用静态工厂方法而不是构造函数来解决此问题。

在 Joshua Bloch 的书“Effective Java”- Item 1 中,他描述了使用静态工厂方法而不是构造函数的优点(和缺点),其中优点之一是静态工厂方法有名称,与构造函数不同。