【问题标题】:Java set variable and method types from one placeJava 从一处设置变量和方法类型
【发布时间】: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 段树等(请注意,这两种情况具有不同的数据类型,因此不同的方法签名)我已经有了我需要弄清楚的方法和数据类型,现在我需要实现它。

【问题讨论】:

    标签: java types


    【解决方案1】:

    在 Java 中,数据类型在编译时解析,而数据值在运行时解析。这就是为什么在 Java 中无法将某个值分配为某个变量的数据类型的原因。

    【讨论】:

    • 等一下,我会在编译前知道我的数据类型
    • 是的,当您使用某个变量时,您会知道但不知道代码。拥有一个具有变量的通用超类和具有自己实现的特定子类将是更好的选择。这也将避免重复代码。如果多个不相关的类具有相同的可变序列结构,那么我相信至少它是相关的。并且将来可能会出现一些要求以具有一些共同的行为。这种结构也可以让您处理。
    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多