gpt4 book ai didi

Java 泛型转换

转载 作者:行者123 更新时间:2023-12-02 08:32:24 24 4
gpt4 key购买 nike

我已经构建了一个通用数据容器,现在我想根据数据的类型来操作数据。但是,我收到不兼容类型的警告。我做错了什么?

Type _Value;
public void set(Type t) throws Exception {
if (_Value instanceof Integer
&& t instanceof Integer) {
_Value = (((Integer) t
- _MinValue + getRange())
% getRange()) + _MinValue;
}
else if (_Value instanceof Boolean
&& t instanceof Boolean) {
_Value = t;
}
else throw new Exception("Invalid type");
}

最佳答案

首先,您没有遵循 Sun Java 编码标准。变量名称应以小写字母开头。我个人的品味会说也失去那个前导下划线。如果必须说明变量是类成员,请使用“this.”。 IDE 足够智能来显示它们。当您拥有的只是一个无法进行文本突出显示的文本编辑器时,用前导下划线表示类成员变量的古老 C++ 约定可能是一个好主意,但现在情况并非如此。

至于您的“instanceof”构造,这违背了所有面向对象的原则。

您不能将类型相关的操作嵌入到容器本身内。我的建议是编写容器并将其包含的项目的操作外部化为迭代器、仿函数或某种类型的访问者。您可以使用泛型类型来指定类型,而不必求助于“instanceof”。

这是一个更加简洁的设计:没有“instanceof”并且适本地分离了关注点。

关于Java 泛型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2980414/

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