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

标签 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<>();
    }
}

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

我有一个这样的类,我们称之为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/

相关文章:

java - for 循环和语法的变体

swift - 在 Swift 类中获取和设置数组

dart - Dart中的静态构造函数

java - 使用 URL 获取标题、元描述内容

java - 为什么我的应用程序在有 while(true) 循环时停止运行?

JavaFX - 如何每两秒刷新一次场景

Java内联类调用父类中的方法

c++ - 在手动调用析构函数期间发生错误 : expression must be a pointer to a complete object type

c++ - 如何在 main() C++ 中调用构造函数?

c++ - 附加冒号在模板类中意味着什么。类名<T, SIZE>::类名: