在Java中,同一个类可以有两个不同名称的构造函数吗?例如,假设我有类 Test
,我想要这样的东西
class Test
HashMap<Integer,Double> hsI;
HashMap<Double,Double> hsD;
Test() {
hsi = new HashMap<>();
}
Test2() {
hsi = new HashMap<>();
hsD = new HashMap<>();
}
}
编辑: 我将解释为什么我会喜欢这个。
我有一个这样的类,我们称之为Class1
:
public class Class1 {
private HashMap<Integer,ClassContainer> hm;
private class ClassContainer {
ClassContainer {
hm1 = new HashMap<>();
hm2 = new HashMap<>();
hm3 = new HashMap<>();
}
HashMap<Double,Double> hm1;
HashMap<Double,Double> hm2;
HashMap<Double,Double> hm3;
... //more code
}
所以我想做一些Class1
的子类,但是在这个类中我不需要ClassContainer
的所有hashmap,我想节省空间。例如,Class2将扩展Class1,但只需要hm2; Class3 将扩展 Class1,但只需要 hm2 和 hm3。
我想要一种方法来初始化 ClassContainer 的必要部分以节省内存。我想使用子类,因为它们共享很多代码。
最佳答案
不可以,构造函数必须具有相同的类名。你能做的最接近的事情就是继承:
class Test {
HashMap<Integer, MyObject> hsI; // a map has two type arguments
Test() {
hsi = new HashMap<>();
}
}
class Test2 extends Test {
HashMap<Double, MyObject> hsD;
Test2() {
super();
hsD = new HashMap<>();
}
}
关于java - 名称与类名不同的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31686482/