草庐IT

Generics

全部标签

java - 泛型 - 下限/上限通配符行为?

这个问题在这里已经有了答案:WhatisPECS(ProducerExtendsConsumerSuper)?(16个答案)关闭5年前。我正在尝试了解下限和上限通配符的行为。尝试编译以下代码时遇到问题。Collectionc=newArrayList();c.add(newObject());//Compiletimeerror为了弄清楚这个问题,我也简单地尝试了下界通配符。幸运或不幸的是,代码编译得很好,但造成了很多困惑。Collectionc=newArrayList();c.add(newObject());//Compilesfine有人可以向我解释一下这两个代码片段是如何工作

通用异常类型的Java类型推断

我正在尝试拥有一个可能会抛出多个异常的仿函数F(在下面的示例中为Checked和SQLException)。我希望能够调用一个以F作为参数的函数,以便重新抛出F抛出的任何已检查异常(除了将在内部处理的SQLException之外)。importjava.sql.Connection;importjava.sql.SQLException;classCheckedextendsException{publicChecked(){super();}}@FunctionalInterfaceinterfaceSQLExceptionThrowingFunction{Uapply(Tt)thr

java - 在 Java 泛型类中,在构造函数级别添加额外的泛型约束?

我有一个名为Bar的接口(interface)和一个泛型类Foo参数化的类型是一个Bar:classFoo{}我的类有一个通用构造函数,它接受一个Class和一个Stream:classFoo{B[]bs;Foo(Classclazz,Streamstream){//Generalctorbs=someFunctionOf(clazz,stream);}}我正在尝试添加一个专门的构造函数,它要求它的实际方法参数both是一个Bar和一个enum类,以便我可以从特殊构造函数调用我的通用构造函数:classFoo{B[]bs;Foo(Classclazz,Streamstream){//G

java - Java 中的泛型类型推断限制

我在使用Java泛型类型推断的项目中遇到以下问题。这是一个类似于我原来的代码示例:publicclassBuildableObject{publicstaticclassOneParameter{}publicstaticclassTwoParameters{}interfaceTwoParamInterface{}publicstaticclassImplementerimplementsTwoParamInterface{}privatefinalOneParameterfirst;privatefinalOneParametersecond;privatefinalTwoPara

java - 类型安全的异构容器模式来存储项目列表

我正在尝试实现一个类型安全的异构容器来存储异构对象列表。我见过几个类型安全的异构容器模式(link)的例子,但它们都存储一个类型的单个对象。我试过如下实现:publicclassEntityOrganizer{privateMap,List>entityMap=newHashMap,List>();publicListgetEntities(Classclazz){returnentityMap.containsKey(clazz)?entityMap.get(clazz):Collections.EMPTY_LIST;}privatevoidaddEntity(Classclazz,

java - 泛型:如何在 Map 中强制执行键和值之间的限制

问题:我在类中定义了一个函数对象接口(interface):publicstaticinterfaceFunctionObject{voidprocess(Tobject);}我需要它是通用的,因为我想在流程实现中使用T方法。然后,在其他通用类中,我有一个Map,其中我将类作为键,将函数对象作为值:Map,FunctionObject>map;但我也希望map接受KEYTYPE父类(superclass)型的子类型类和函数对象,所以我这样做了:Map,FunctionObject>map;//notwhatIneed基本思想是能够按如下方式使用map://ifTwereNumber,t

java - 用 "super"生成

我想像这样写一个交互器:classPlant{}classTreeextendsPlant{}classMapleextendsTree{}//Iteratorclass:compilererrorontheword"super".classMyIteratorimplementsIterator{privateintindex=0;privateListlist=//Getthelistfromanexternalsource.publicTnext(){Maplemaple=list.get(index++);//Dosomeprocessing.returnmaple;}//Th

java - 如何获取类型为 T 的字段的类?

我为一些SpringMVCController编写JUnit测试。JUnit测试的初始化对于我所有的Controller测试都是通用的,因此我想创建一个抽象类来执行此初始化。因此,我创建了以下代码:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath*:spring/applicationContext-test.xml","classpath*:spring/spring-mvc-test.xml"})@TransactionalpublicabstractclassAbs

java - Java 内部类的类引用

有没有办法引用任何内部类?我想指定一个与内部类兼容的返回类型,例如Classsome_method();我了解此语法无效。有没有办法表达这个?我知道我不能使用像Class这样的东西因为内部类不会扩展外部类。 最佳答案 嗯,你可以引用具体的内部类,至少:Classsome_method()除此之外,返回任何内部类的对象会有什么好处?这相当于返回任何对象加上内部实例与外部实例具有特殊关系这一事实。但是,您可能无法直接使用该特殊关系。编辑:正如其他人已经指出的那样,InnerClass可能是由其他内部类扩展的父类(superclass)。

java - 这是堆污染的解决方法吗?

我有一个像下面这样的构造函数publicMyConstructor(MyObject...objects){//...}Eclipse使用以下消息警告我:Typesafety:Potentialheappollutionviavarargsparameterobjects我这样修改构造函数:publicMyConstructor(MyObject[]objects){//...}现在,警告消失了。但是,我认为潜在的危险并没有解决。此解决方法有效吗? 最佳答案 在某种程度上,这是一种解决方法。创建不可具体化的组件类型的数组是不安全的。