相关疑难解决方法(0)

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

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

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

java generics super pecs bounded-wildcard

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

什么是原始类型,为什么我们不应该使用它?

问题:

  • 什么是Java中的原始类型,为什么我经常听说不应该在新代码中使用它们?
  • 如果我们不能使用原始类型,它有什么替代方案,它是如何更好的?

java generics raw-types

617
推荐指数
13
解决办法
20万
查看次数

如何添加到List <?扩展Number>数据结构?

我有一个List,声明如下:

 List<? extends Number> foo3 = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

我试图将3添加到foo3.但是我收到如下错误消息:

The method add(capture#1-of ? extends Number) in the type List<capture#1-of ?
extends Number> is not applicable for the arguments (ExtendsNumber)
Run Code Online (Sandbox Code Playgroud)

java generics

145
推荐指数
2
解决办法
6万
查看次数

Java Generics中'super'和'extends'之间的区别是什么?

我正在尝试学习Java泛型.我不清楚你什么时候使用<T extends Foo>以及何时使用<T super Foo>.这些事情中的每一个对T意味着什么?可以说我有<T extends Comparable><T super Comparable>,什么每个这些是什么意思?

我在sun.com上看过几个教程,但我还是迷路了.有人能举例说明吗?

谢谢!

java generics

78
推荐指数
5
解决办法
4万
查看次数

<E extends Number>和<Number>之间有什么区别?

这个方法声明有什么区别:

public static <E extends Number> List<E> process(List<E> nums){
Run Code Online (Sandbox Code Playgroud)

 public static List<Number> process(List<Number> nums){
Run Code Online (Sandbox Code Playgroud)

你会在哪里使用前者?

java generics

36
推荐指数
2
解决办法
1万
查看次数

泛型在Eclipse中编译和运行,但不能在javac中编译

注意:这是关于null的Comparable和Comparator合同的衍生产品

这段代码在Eclipse(20090920-1017)中编译并运行良好

import java.util.*;
public class SortNull {
   static <T extends Comparable<? super T>>
   Comparator<T> nullComparableComparator() {
      return new Comparator<T>() {
         @Override public int compare(T el1, T el2) {
         return
            el1 == null ? -1 :
            el2 == null ? +1 :
            el1.compareTo(el2);
         }
      };
   }
   public static void main(String[] args) {
      List<Integer> numbers = new ArrayList<Integer>(
         Arrays.asList(3, 2, 1, null, null, 0)
      );
      Comparator<Integer> numbersComp = nullComparableComparator();
      Collections.sort(numbers, numbersComp);
      System.out.println(numbers);
      // "[null, null, 0, …
Run Code Online (Sandbox Code Playgroud)

java generics compiler-errors

23
推荐指数
2
解决办法
9338
查看次数

任何简单的方法来解释为什么我不能做List <Animal> animals = new ArrayList <Dog>()?

我知道为什么不应该这样做.但有没有办法向外行人解释为什么这是不可能的.你可以轻松地向外行解释:Animal animal = new Dog();.狗是一种动物,但是一系列的狗并不是动物的清单.

java oop generics covariance

22
推荐指数
5
解决办法
5063
查看次数

java泛型协方差

我无法理解以下文章:http: //www.ibm.com/developerworks/java/library/j-jtp01255.html

下,

泛型不是协变的

作者说,

因为ln是一个List,所以添加一个Float似乎是完全合法的.但是如果ln与li混淆,那么它将破坏li定义中隐含的类型安全承诺 - 它是一个整数列表,这就是泛型类型不能协变的原因.

我无法理解它所说的"如果ln与li混淆"的部分.作者对别名的含义是什么?(参考?).引用行上方的代码片段似乎说明了什么在java中是非法的而不是为什么.如果有人能用一个例子来解释,对我来说会很有帮助.提前致谢.

java generics alias covariance

20
推荐指数
2
解决办法
1万
查看次数