我有一个应用程序适用于所有都具有整数___ID主键的实体(例如StudentID,CourseID等)
我想在程序中添加一些类型安全性,因此例如一个将StudentID作为输入的函数,不能意外地传递给CourseID。
我想到的第一个想法是创建这样的简单空类:
public class StudentID extends java.util.Integer {}
public class CourseID extends java.util.Integer {}
由于java.util.Integer
为final
而且无法延长,因此无效。
第二个想法是拥有一个只包含整数的数据类:
public class StudentID {
private final int id;
public int get() { return id; }
}
虽然这将是很多样板代码。
第三个想法就像第二个想法,但是通过一个定义get方法的基类和从它继承的空类来节省样板代码:
public abstract class AbstractID {
private final int id;
public int get() { return id; }
}
public class StudentID extends AbstractID{};
public class CourseID extends AbstractID{};
这个问题还有其他/更好的模式吗?
答案 0 :(得分:3)
ID<T>
怎么样?如果你想将一些参数限制为一个函数,我认为你可以这样做:
void foo (ID<? extends Student> param);