gpt4 book ai didi

java - "Value"成员字段可以是四种不同类型之一 - 最佳设计?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:03:57 25 4
gpt4 key购买 nike

我有一个名为“DataModel”之类的类,它基本上是一个数据单元,可以是字符串、数字、日期或具有各种(相同)属性的 boolean 值。

编写此模型的最佳方式是什么?

  1. 让值是Object类型

    interface DataModel {
    Object getValue(); // cast to whatever is needed
    int getValueType(); // uses four constants
    }
  2. 有四个不同的实现“StringModel”、“NumberModel”等,每个都有自己类型化的“getValue()”方法。这意味着如果您有一个数据模型,则必须转换为正确的模型才能获得该值。

    interface DataModel {
    int getValueType();
    }
    interface NumberDataModel extends DataModel {
    Integer getValue();
    }
    ...
  3. 有四种不同的方法,如果为错误的值类型调用,每种方法都会抛出异常:

    interface DataModel {
    String getStringValue();
    Integer getIntegerValue();
    ...
    int getValueType();
    }
  4. 使用泛型。这有一个缺点,我理论上可以拥有任何类型的任何对象......另一方面,如果 T 不是 4 种允许类型之一,我可以在构造函数中抛出 IllegalStateException ......

    interface DataModel<T> {
    T getValue();
    }
  5. 没关系。以上任何一项。 ;)

最佳答案

4 似乎是最好的 - 即使您不想实现任何旧类型,也没有特别的理由说明您理论上不应该允许它 - 它不会干扰您正在做的任何其他事情。

关于java - "Value"成员字段可以是四种不同类型之一 - 最佳设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2056991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com