gpt4 book ai didi

java - 如何 "public class FoobarID extends Long"?

转载 作者:行者123 更新时间:2023-12-02 07:34:50 25 4
gpt4 key购买 nike

我想我必须接受 Longfinal 并且无法扩展。

在我们的项目中,我们使用数据库并以 Long-s 的形式在代码中传递不同事物的 ID。

但是 UserID 不是 LogID 也不是 ServerID,尽管它们都是 Long 。在我看来,编译器和 IDE 应该能够检测到一整类错误,例如当尝试使用 UserID 代替 ServerID 时。目前编译器无法检测到这一点,因为两者的类型都是Long

如果Long不是最终我可以说

public class UserID extends Long {};

但是Longfinal,所以我不能。还有比以下更优雅的东西吗:

    public class UserID {
private Long ID;
UserID(Long ID) {
this.ID = ID;
}
UserID(UserID ID) {
this.ID = ID.toLong();
}
public Long toLong() {
return ID;
}
public void fromLong(Long ID) {
this.ID = ID;
}
};

编辑:我知道这是不优雅的 - “糟糕”!这些评论似乎假设我将在我的生产代码中添加类似的内容。我不是。

这看起来很浪费而且不优雅。我想祝你好运,例如DbUtils在 JavaBean 处理中使用 UserID

有“更好的方法”(TM)吗? (不仅仅是与 Long-s 一起生活;-))

最佳答案

在我们的项目中,我们创建了其他 Id 继承的 Id 类,例如 UserId。拥有单独的 Id 类对代码清晰度有很大帮助。有一次我们遇到了一个问题,函数接受了两个长的 Id。程序员把这些 id 的顺序弄错了——像这样的错误可能会带来大问题。我的建议是做同样的事情,不要尝试从 Long 扩展,而是从你自己的 Id 类扩展。 :)

关于java - 如何 "public class FoobarID extends Long"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058284/

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