类型安全整数的设计模式?

时间:2014-07-27 13:11:18

标签: java design-patterns type-safety

我有一个应用程序适用于所有都具有整数___ID主键的实体(例如StudentID,CourseID等)

我想在程序中添加一些类型安全性,因此例如一个将StudentID作为输入的函数,不能意外地传递给CourseID。

我想到的第一个想法是创建这样的简单空类:

public class StudentID extends java.util.Integer {}
public class CourseID extends java.util.Integer {}

由于java.util.Integerfinal而且无法延长,因此无效。

第二个想法是拥有一个只包含整数的数据类:

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{};

这个问题还有其他/更好的模式吗?

1 个答案:

答案 0 :(得分:3)

ID<T>怎么样?如果你想将一些参数限制为一个函数,我认为你可以这样做:

void foo (ID<? extends Student> param);