bounded-wildcard

    2热度

    4回答

    为什么我不能一个整数添加到该类型的列表,尽管Integer扩展号码> List<? extends Number> numList = new ArrayList<Integer>(); Integer f = 12; numList.add(f);

    1热度

    1回答

    我工作在Java OCP考试编译,我碰到这个问题 考虑下面的代码来: Transaction t1 = new Transaction<>(1, 2); //1 Transaction t2 = new Transaction<>(1, "2"); //2 它要求// 1必须编译和//2不能编译。 Class Transaction的以下哪些声明将满足请求? 答案是这样的一个: public

    0热度

    1回答

    我想将方法​​输入的兼容类型限制为某个类的子类的集合。但是,我只想让子类的第一层被接受。例如,类“形状”有多种子类,例如。 “矩形”,“圆”,“三角形”。现在“矩形”有它自己的子类“方形”,那么如何将接受的集合限制为仅接受由矩形,圆形和三角形组成的子类的层级而不接受方形? 0 shape / | \ 1 rectangle circle triangle

    2热度

    2回答

    鉴于为什么泛型类型Test2类不默认为Base类,而是默认为java.lang.Object类的代码 abstract class Base<Thistype extends Base> { public void addOnSomethingListener(Consumer<? super Thistype> action) {} public void fo

    0热度

    1回答

    考虑下面的类: import java.util.ArrayList; import java.util.Collection; public class Main { private static class A { } private static class B<T> { private void thenReturn(T value) {

    0热度

    2回答

    有一个现有的Set<Trump>传递给另一个函数,它将Set<? extends Politician>作为参数。鉴于Set<? extends Politician>将包含Politician对象或仅包含Trump对象。 该Politican类不能被修改。 Trump类可供修改。 有没有办法干净地做下面的事情,或者派生类(Trump)应该如何重新设计才能做到这一点? public Set<Tru

    0热度

    2回答

    我被这个问题困住了几个小时。我试图找到一个C#的等价方法。 的Java,工作原理: public class Main { public static void main(String[] args) { ArrayList<BaseList<? extends Base>> list = new ArrayList<>(); list.add(new D

    9热度

    4回答

    甲骨文doc about Wildcards in generics说, 通配符可以在多种情况下使用:作为类型 参数,字段,或局部变量的;有时候作为返回类型 (虽然更好的编程习惯是更具体的)。 我已经在下面的类中尝试了所有四个,并且每个都有编译器错误。为什么?我究竟做错了什么? public class MainClass { private ? instanceFieldWithWil

    1热度

    1回答

    文件GenericInterface.java: import java.lang.Comparable; import java.util.function.Function; public class GenericInterface { } interface Comparator<T> { int compare(T o1, T o2); static <

    0热度

    2回答

    我不明白为什么我得到这些编译错误:在 Add方法(捕获#1的扩展Exec.Bird?): 1类型列表不适用的参数(Exec.Sparrow) 2: 的甲基od add(捕获#2的?扩展Exec.Bird)在类型列表不适用于 static class Bird{} static class Sparrow extends Bird{} public static void main(Strin