有没有办法在没有泛型的情况下在编译时确保java中的类型安全

时间:2014-07-01 12:15:24

标签: java generics compile-time type-safety

我正在使用旧版本的java SDK编写一个java应用程序,它不支持Generics。那么,如何在编译期间确保类型安全。我可以使用instanceof()。但是,它确实确保了运行时类型的安全性。请提供您的建议。

2 个答案:

答案 0 :(得分:3)

您需要使用抽象/接口(即通过使它们全部实现相同的接口来限制事物)或者您需要使用泛型。

还有很多其他选项,这正是添加了解决的泛型。

答案 1 :(得分:2)

在过去的糟糕时期,集合和地图通常被填充在一个类中,该类的方法暴露了正确的类型。因此,要创建一个" typesafe"整数列表,您可以执行以下操作:

class IntegerList {
    private final List delegate = new ArrayList();

    public boolean add(Integer i) {
        return delegate.add(i);
    }

    public Integer get(int index) {
        return (Integer) delegate.get(i);
    }

    public Iterator iterator() {
        return delegate.iterator();
    }

    // etc
}

当然,您仍然坚持使用非类型安全Iterator,但您可以使用其他类似的IntegerIterator来实现这一目标。请注意,这基本上是泛型为您自动执行的操作。

为什么要使用这样陈旧的JDK?