我想要一个方法来处理实现特定接口的任何类型的列表。
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”。我的类不扩展可加密,而是实现它。我写的东西真的有用吗?或者我是做错事但得到正确答案的某种副作用的受害者。
一如既往,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节。
你做得很对。这有点含糊不清,但是是的你是对的。但是请记住,您总是可以使用接口而不是类,然后扩展
确实有意义。
是的,你做得对。根据文档,您正在使用一个上限通配符:
若要声明上限通配符,请使用通配符 ('?'), 后跟扩展关键字,后跟其上限。请注意,在这种情况下,扩展在一般意义上是指“扩展”(如在类中)或“实现”(如在接口中)。
但是,在使用类型参数的多个边界时,应该谨慎。在多边界类型参数中,必须首先指定类名,然后指定接口。
我是java编程新手,不知道这些错误的含义: 源代码: 程序的名称与类的名称相同,我找到了解决方案。当我删除类中的public player和playgame时,程序没有出现错误,但我仍然无法理解错误的含义。请帮帮我
Java宣布一个集合为最终集合意味着什么?是不能再添加更多元素了吗?是已经存在的元素不能更改吗?是别的什么吗?
在这种情况下是否可以避免ArrayIndexOutOfBoundsException??
据我所知,<code>override</code>关键字声明给定的声明实现了一个基本<code>virtual</code>方法,如果没有找到匹配的基本方法,编译应该失败。 我对< code>final关键字的理解是,它告诉编译器任何类都不能覆盖这个< code >虚拟函数。 那么是多余的吗?它似乎编译得很好。最终传达哪些信息而信息不传达?这种组合的用例是什么?
我想创建一个
本文向大家介绍如果副本长时间不在ISR中,这意味着什么?相关面试题,主要包含被问及如果副本长时间不在ISR中,这意味着什么?时的应答技巧和注意事项,需要的朋友参考一下 答:简单地说,这意味着跟随者不能像领导者收集数据那样快速地获取数据。