【发布时间】:2020-12-08 04:24:55
【问题描述】:
我正在尝试制作一个可以复制粘贴的灵活数据结构。我希望它只处理一种数据类型,但能够在复制粘贴时轻松更改它。考虑这个简单的例子:
class Data {
//customize these
int a;
int b;
int val;
private int f() {
return a + b;
}
//built-in functions that I don't customize
public void build() {
int temp = f();
this.val = temp;
}
public int query() {
return this.val;
}
}
假设我希望 a 和 b 是数组, f 是连接。我将不得不更改 a、b、val、f、query 和 temp 的类型。如果我有更多依赖于类型的代码,这将是一个痛苦的改变。我想要这样的东西:
ClassType c = Integer; //or maybe Long, int[], ArrayList ...
c a;
c b;
private c f() {
...
我不是在寻找仿制药。在任何特定程序中,我都会有一个固定类型。这纯粹是为了使跨多个独立程序更容易复制粘贴此数据结构。即,我不想在每个实例化(使用泛型)上指定这些数据类型。
另外,理想情况下,这不会增加 int 的开销,这对我来说是一个常见的用例(所以简单地创建一个任何数据类型的类都不理想)。
更多细节(有点不相关):我想要一个可以“自定义”为范围最小查询的段树,将范围排序为数组,2D 段树等(请注意,这两种情况具有不同的数据类型,因此不同的方法签名)我已经有了我需要弄清楚的方法和数据类型,现在我需要实现它。
【问题讨论】: