首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非泛型类能实现泛型接口吗?

非泛型类能实现泛型接口吗?
EN

Stack Overflow用户
提问于 2019-01-22 20:52:03
回答 2查看 2.5K关注 0票数 2

我一直在读Herbert的"Java,一个初学者指南“。在一页的通用接口一节中,作者写道(重点是我的):

实现泛型接口的任何类本身都必须是泛型

在下一页(强调我的):

在一般中,如果一个类实现了泛型接口,那么该类也必须是泛型,至少在一定程度上它接受传递给接口的类型参数。

那么,是否存在非泛型类可以在Java中实现泛型接口的特定情况?或者所有这些类都是泛型的,因为它们从泛型接口中“继承”了这种通用性?

UPD:,我应该进一步阅读这一节。提交人接着说:

当然,如果另一个高级类实现了特定类型的泛型接口,如这里所示:class MyClass implements Containment<Double> {,那么实现类不需要是泛型的。

我相信,这是我的帖子的全部答案的要点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-22 20:56:58

如果提供了类型参数,则可以创建实现泛型接口的非泛型类。

一个相对简单的例子:

代码语言:javascript
复制
public class LocalDateParser implements Function<String, LocalDate> {
    public LocalDate apply (String s) {
        return LocalDate.parse(s);
    }
}

当然,您只能将该类的一个实例分配给Function<String, LocalDate>,而不能分配给任何其他Function<T, R>

票数 4
EN

Stack Overflow用户

发布于 2019-01-22 21:11:32

你正在读的指南是错的。

有许多非泛型类实现泛型接口的例子。

最常见的是Comparable。Java8javadoc列出了152个实现类,其中很少将泛型类型参数传递给接口,因为它们都应该将自己指定为Comparable的参数。

代码语言:javascript
复制
public final class String implements Serializable, Comparable<String>, CharSequence
代码语言:javascript
复制
public final class Integer extends Number implements Comparable<Integer>
代码语言:javascript
复制
public final class Instant implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54316272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档