我一直在读Herbert的"Java,一个初学者指南“。在一页的通用接口一节中,作者写道(重点是我的):
实现泛型接口的任何类本身都必须是泛型。
在下一页(强调我的):
在一般中,如果一个类实现了泛型接口,那么该类也必须是泛型,至少在一定程度上它接受传递给接口的类型参数。
那么,是否存在非泛型类可以在Java中实现泛型接口的特定情况?或者所有这些类都是泛型的,因为它们从泛型接口中“继承”了这种通用性?
UPD:,我应该进一步阅读这一节。提交人接着说:
当然,如果另一个高级类实现了特定类型的泛型接口,如这里所示:
class MyClass implements Containment<Double> {,那么实现类不需要是泛型的。
我相信,这是我的帖子的全部答案的要点。
发布于 2019-01-22 20:56:58
如果提供了类型参数,则可以创建实现泛型接口的非泛型类。
一个相对简单的例子:
public class LocalDateParser implements Function<String, LocalDate> {
public LocalDate apply (String s) {
return LocalDate.parse(s);
}
}当然,您只能将该类的一个实例分配给Function<String, LocalDate>,而不能分配给任何其他Function<T, R>。
发布于 2019-01-22 21:11:32
你正在读的指南是错的。
有许多非泛型类实现泛型接口的例子。
最常见的是Comparable。Java8javadoc列出了152个实现类,其中很少将泛型类型参数传递给接口,因为它们都应该将自己指定为Comparable的参数。
public final class String implements Serializable, Comparable<String>, CharSequencepublic final class Integer extends Number implements Comparable<Integer>public final class Instant implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializablehttps://stackoverflow.com/questions/54316272
复制相似问题