首页 > TAG信息列表 > bounded-wildcard

是否可以为Java中的数字框类型编写通用的1方法?

This is NOT homework. 第1部分 是否可以编写通用方法,如下所示: <T extends Number> T plusOne(T num) { return num + 1; // DOESN'T COMPILE! How to fix??? } 如果不使用一堆instanceof和casts,这可能吗? 第2部分 编译以下3种方法: Integer plusOne(Integer num) {

java – 在通配符类型ArrayList中添加元素

我试图在列表中添加一个元素,其中列表类型参数是扩展Question的通配符 ArrayList<? extends Question> id = new ArrayList<? extends Question>(); id.add(new Identification("What is my name?","some",Difficulty.EASY)); map.put("Personal"

Java泛型方法:超级不能用?

所以我有这个方法: protected void collectSelectedItems(ListSelectionModel lsm, Collection<? super MyItemClass> result) { for (int i : GUI.getSelectionIndices(lsm)) { result.add(getItemByDisplayIndex(i)); } } 我想返回集合而不是void

java – Bounded-wildcard相关的编译器错误

我想知道这段代码有什么问题: Map <? extends String, ? extends Integer> m = null; Set<Map.Entry<? extends String, ? extends Integer>> s = m.entrySet(); 编译器抱怨错误消息: Type mismatch: cannot convert from Set<Map.Entry<capture#1-of ? extends String,

java – 当使用Bounded类型参数或直接键入Interface时

如果您需要将接口类型的参数传递给方法,则可以使用两个impl. 使用有界类型参数: public static <I extends InterfaceObj> void isTrue(boolean expression, I interfaceobj) { if(!expression){ throw new RunTimeException(interfaceobj); }} 否则

在Java泛型中共享通配符

假设我有一个界面 interface Foo<T> { void foo(T x); T bar() } 以及具有未知参数的这种类型的对象:Foo<?>巴兹.然后我可以调用baz.foo(baz.bar()). 但是,现在我需要将值baz.bar()放入一个集合中,稍后再调用它上面的baz.foo().就像是 List<???> list; // can I tell t

java – 为什么ArrayList>的隐式转换为Iterable>不可能?

我想知道Java无法转换ArrayList< ArrayList< T>>的原因.到Iterable< Iterable< T>>含蓄. 我的问题不是关于如何明确地做到这一点. 为什么以下代码: import java.util.Iterator; import java.util.ArrayList; public class Test { public Test() { ArrayList<ArrayList<Test>

java – 是否可以编写一个接受不同抽象的泛型参数的方法?

作为followup to this question,是否可以编写一个方法,将狗添加到合适的房间? (在这个例子中,它会接受动物室或狗室.)或者我是否被迫写下两种不同的方法如下? (因为类型擦除,我甚至不能依赖重载). public class Rooms { interface Animal {} class Dog implements Animal {}

协变结构在Java中捕获错误失败

请考虑以下Java类定义: class Animal {} class Lion extends Animal {} 在为动物定义协变Cage时,我在Java中使用此代码: class Cage<T extends Animal> { void add(T animal) { System.out.println("Adding animal..."); } } 但是以下Java示例…… public static void main(Stri

.NET等效于Java通配符泛型<?>,具有协方差和反方差?

我试图将一些使用(有界)通配符泛型的Java代码转换为C#.我的问题是,Java似乎允许泛型类型在与通配符一起使用时既是协变的又是逆变的.例如: Java的: interface IInterf { } class Impl implements IInterf { } interface IGeneric1<T extends Impl> { void method1(IGeneric2<?

java – 什么方法声明接受有界和无界多级泛型?

鉴于: public class Testcase { public static <E> List<List<E>> transform(List<List<E>> list) { return list; } public static <E> List<List<? extends E>> transform2(List<List<? extend

Java泛型好奇心

我有一个接口A,B类实现. 以下通用方法有效 public static <T, U extends T> List<T> listFactory(Collection<U> source) { return new ArrayList<T>(source); } 但 public static <T> List<T> listFactory(Collection<? extends T> source) {