标签: bounded-wildcard

什么是PECS(制作人扩展消费者超级)?

我在阅读泛型时遇到了PECS(制片extends人和消费者的super简称).

能否给我一个人解释如何使用佩奇之间解决困惑extendssuper

java generics super pecs bounded-wildcard

680
推荐指数
11
解决办法
9万
查看次数

具有多个类的Java泛型通配符

我想要一个Class对象,但我想强制它所代表的任何类来扩展A类并实现接口B.

我可以:

Class<? extends ClassA>
Run Code Online (Sandbox Code Playgroud)

要么:

Class<? extends InterfaceB>
Run Code Online (Sandbox Code Playgroud)

但我不能两者兼顾.有没有办法做到这一点?

java generics class bounded-wildcard

369
推荐指数
2
解决办法
14万
查看次数

Mockito:使用有界通配符返回类型的存根方法

考虑以下代码:

public class DummyClass {
    public List<? extends Number> dummyMethod() {
        return new ArrayList<Integer>();
    }
}
Run Code Online (Sandbox Code Playgroud)
public class DummyClassTest {
    public void testMockitoWithGenerics() {
        DummyClass dummyClass = Mockito.mock(DummyClass.class);
        List<? extends Number> someList = new ArrayList<Integer>();
        Mockito.when(dummyClass.dummyMethod()).thenReturn(someList); //Compiler complains about this
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨正在尝试存根行为的行dummyMethod().关于如何使用有界通配符返回类型的存根方法的任何指针?

java generics unit-testing mockito bounded-wildcard

117
推荐指数
4
解决办法
8万
查看次数

Java泛型(通配符)

我有几个关于Java中通用通配符的问题:

  1. List<? extends T>和之间有什么区别List<? super T>

  2. 什么是有界通配符,什么是无界通配符?

java generics bounded-wildcard

106
推荐指数
3
解决办法
7万
查看次数

为什么不能在有界通配符通用中有多个接口?

我知道Java的泛型类型存在各种反直觉属性.这是我不理解的一个,我希望有人可以向我解释.为类或接口指定类型参数时,可以绑定它以使其必须实现多个接口public class Foo<T extends InterfaceA & InterfaceB>.但是,如果您要实例化实际对象,则此功能不再起作用.List<? extends InterfaceA>很好,但List<? extends InterfaceA & InterfaceB>无法编译.请考虑以下完整代码段:

import java.util.List;

public class Test {

  static interface A {
    public int getSomething();
  }

  static interface B {
    public int getSomethingElse();
  }

  static class AandB implements A, B {
    public int getSomething() { return 1; }
    public int getSomethingElse() { return 2; }
  }

  // Notice the multiple bounds here. This works.
  static class AandBList<T extends A & B> {
    List<T> …
Run Code Online (Sandbox Code Playgroud)

java generics language-design bounded-wildcard

69
推荐指数
3
解决办法
1万
查看次数

Java:有界通配符还是有界类型参数?

最近,我读了这篇文章:http: //download.oracle.com/javase/tutorial/extra/generics/wildcards.html

我的问题是,而不是创建这样的方法:

public void drawAll(List<? extends Shape> shapes){
    for (Shape s: shapes) {
        s.draw(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以创建一个这样的方法,它工作正常:

public <T extends Shape> void drawAll(List<T> shapes){
    for (Shape s: shapes) {
        s.draw(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该使用哪种方式?在这种情况下,通配符是否有用?

java generics api bounded-wildcard

68
推荐指数
2
解决办法
3万
查看次数

Java Generics Puzzler,扩展一个类并使用通配符

我一直在打击这个问题一段时间,并认为可能会有一些新鲜的眼睛看到这个问题; 谢谢你的时间.

import java.util.*;

class Tbin<T> extends ArrayList<T> {}
class TbinList<T> extends ArrayList<Tbin<T>> {}

class Base {}
class Derived extends Base {}

public class Test {
  public static void main(String[] args) {
    ArrayList<Tbin<? extends Base>> test = new ArrayList<>();
    test.add(new Tbin<Derived>());

    TbinList<? extends Base> test2 = new TbinList<>();
    test2.add(new Tbin<Derived>());
  }
}
Run Code Online (Sandbox Code Playgroud)

使用Java 8.在我看来,直接创建容器test就等同于容器test2,但编译器说:

Test.java:15: error: no suitable method found for add(Tbin<Derived>)
    test2.add(new Tbin<Derived>());
         ^
Run Code Online (Sandbox Code Playgroud)

我怎么写Tbin,TbinList所以最后一行是可以接受的?

请注意,我实际上将添加类型Tbins,这就是我Tbin<Derived>在最后一行中指定的原因.

java generics bounded-wildcard

51
推荐指数
3
解决办法
1592
查看次数

List <?>在java泛型中的含义是什么?

什么List<?>意思,它只是意味着一个未指定类型的对象列表?

谷歌搜索字符串<?>返回没有任何用处(:

java generics bounded-wildcard

42
推荐指数
3
解决办法
4万
查看次数

名单<?扩展MyType>

我有关于泛型的Java问题.我宣布了一个通用名单:

List<? extends MyType> listOfMyType;
Run Code Online (Sandbox Code Playgroud)

然后在某些方法中我尝试实例化并将项添加到该列表:

listOfMyType = new ArrayList<MyType>();
listOfMyType.add(myTypeInstance); 
Run Code Online (Sandbox Code Playgroud)

哪里myTypeInstance只是一个类型的对象MyType; 它不会编译.它说:

该方法在类型List <capture#3-of中添加(捕获#3-of?extends MyType)?extends MyType>不适用于参数(MyType)

任何的想法?

java generics list bounded-wildcard

39
推荐指数
3
解决办法
5万
查看次数

有界通配符和类型参数之间有什么区别?

两者之间有区别吗?

<N extends Number> Collection<N> getThatCollection(Class<N> type)
Run Code Online (Sandbox Code Playgroud)

Collection<? extends Number> getThatCollection(Class<? extends Number>)
Run Code Online (Sandbox Code Playgroud)

java generics type-parameter bounded-wildcard

37
推荐指数
1
解决办法
5142
查看次数