当前位置: 首页 > 知识库问答 >
问题:

在Java中,“extends”在这种情况下是否也意味着“implements”?[副本]

白飞飙
2023-03-14

我想要一个方法来处理实现特定接口的任何类型的列表。

public interface Encryptable {
    public void encrypt() throws Exception ;
}

class DomainClass implements Encryptable {

    String name ;

    public void encrypt() throws Exception {
        try {
            name = CryptoUtils.encrypt(name);
        } 
    }
}

此实用程序方法可以加密任何实现加密表的域类的列表。

public static void encryptList ( Collection<? extends Encryptable> listToEncrypt    ) {
    for ( Encryptable objToEncrypt: listToEncrypt ) {
        try {
            objToEncrypt.encrypt() ;
        } catch (Exception e) {
        }
    }
}

我写了一个测试应用程序,这似乎是可行的。我关心的是Java关键字“extends”。我的类不扩展可加密,而是实现它。我写的东西真的有用吗?或者我是做错事但得到正确答案的某种副作用的受害者。

共有3个答案

聂溪叠
2023-03-14

一如既往,JLS对此有答案。

见第8.1节。2对于泛型类型参数的语法:

TypeParameters:
    < TypeParameterList >

TypeParameterList:
    TypeParameterList , TypeParameter
    TypeParameter

对于类型参数的语法,请参见第4.4节:

TypeParameter:
    TypeVariable TypeBoundopt

TypeBound:
    extends TypeVariable
    extends ClassOrInterfaceType AdditionalBoundListopt

AdditionalBoundList:
    AdditionalBound AdditionalBoundList
    AdditionalBound

AdditionalBound:
    & InterfaceType

您可以看到,它在TypeBound中为ClassOrInterfaceType使用了扩展关键字。有关类型参数和通配符的语法,请参见第4.5.1节。

穆鸿卓
2023-03-14

你做得很对。这有点含糊不清,但是是的你是对的。但是请记住,您总是可以使用接口而不是类,然后扩展确实有意义。

越学文
2023-03-14

是的,你做得对。根据文档,您正在使用一个上限通配符:

若要声明上限通配符,请使用通配符 ('?'), 后跟扩展关键字,后跟其上限。请注意,在这种情况下,扩展在一般意义上是指“扩展”(如在类中)或“实现”(如在接口中)。

但是,在使用类型参数的多个边界时,应该谨慎。在多边界类型参数中,必须首先指定类名,然后指定接口。

 类似资料:
  • 我是java编程新手,不知道这些错误的含义: 源代码: 程序的名称与类的名称相同,我找到了解决方案。当我删除类中的public player和playgame时,程序没有出现错误,但我仍然无法理解错误的含义。请帮帮我

  • Java宣布一个集合为最终集合意味着什么?是不能再添加更多元素了吗?是已经存在的元素不能更改吗?是别的什么吗?

  • 在这种情况下是否可以避免ArrayIndexOutOfBoundsException??

  • 我想创建一个

  • 据我所知,<code>override</code>关键字声明给定的声明实现了一个基本<code>virtual</code>方法,如果没有找到匹配的基本方法,编译应该失败。 我对< code>final关键字的理解是,它告诉编译器任何类都不能覆盖这个< code >虚拟函数。 那么是多余的吗?它似乎编译得很好。最终传达哪些信息而信息不传达?这种组合的用例是什么?

  • 本文向大家介绍如果副本长时间不在ISR中,这意味着什么?相关面试题,主要包含被问及如果副本长时间不在ISR中,这意味着什么?时的应答技巧和注意事项,需要的朋友参考一下 答:简单地说,这意味着跟随者不能像领导者收集数据那样快速地获取数据。