名称与类名不同的构造函数

mul*_*aph 0 java oop constructor

在Java中,是否可以有两个名称不同的同一个类的构造函数?例如,假设我有课程 Test,我想要这样的东西

class Test
    HashMap<Integer,Double> hsI;
    HashMap<Double,Double> hsD;

    Test() {
        hsi = new HashMap<>();
    }

    Test2() {
        hsi = new HashMap<>();
        hsD = new HashMap<>();
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: 我将解释为什么我会喜欢这个。

我有一个这样的课程,让我们称之为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
    }
Run Code Online (Sandbox Code Playgroud)

所以我想做几个子类Class1,但是在这个类中我不需要所有的hashmap ClassContainer,我想节省空间。例如,Class2 将扩展 Class1,但只需要 hm2;Class3 将扩展 Class1,但只需要 hm2 和 hm3。

我想要一种方法来初始化 ClassContainer 的必要部分以节省内存。我想使用子类,因为它们共享大量代码。

man*_*uti 5

不,构造函数必须具有相同的类名。您可以做的最接近的事情是继承:

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<>();
   }
}
Run Code Online (Sandbox Code Playgroud)