Java “与”之间的实际区别是什么;ArrayList<;A>&引用;及;ArrayList<;?扩展A>&引用;?

Java “与”之间的实际区别是什么;ArrayList<;A>&引用;及;ArrayList<;?扩展A>&引用;?,java,generics,Java,Generics,我看了一些问题,但它们并没有完全涵盖我的问题 请注意,ArrayList和ArrayListArrayList表示特定的a类,其中asArrayList使用private ArrayList作为变量声明实际上并不等同于使用通配符private ArrayList,这将解释差异: public class GenericsTest { private ArrayList<A> la; private ArrayList<? extends A> lexta;

我看了一些问题,但它们并没有完全涵盖我的问题


请注意,
ArrayList和ArrayList
ArrayList
表示特定的a类,其中as
ArrayList使用
private ArrayList
作为变量声明实际上并不等同于使用通配符
private ArrayList,这将解释差异:

public class GenericsTest {
  private ArrayList<A> la;
  private ArrayList<? extends A> lexta;

  void doListA(ArrayList<A> la) {}
  void doListExtA(ArrayList<? extends A> lexta) {}

  void tester() {
    la = new ArrayList<SubA>(); // Compiler error: Type mismatch
    doListA(new ArrayList<SubA>());  // Compiler error: Type mismatch
    lexta = new ArrayList<SubA>();
    doListExtA(new ArrayList<SubA>());
  }

  static class A {}
  static class SubA extends A {}
}
公共类泛型测试{
私人ArrayList la;

private ArrayList让我们看看一些实际例子。比如说,你有:

List<Number> list;
这张表是这样写的:嘿,这是一个扩展了
数字的列表,但是没有人知道确切的含义。这意味着什么?这意味着你可以将
数组列表
分配给这个列表,这在第一种情况下是不可能的。你仍然知道这个列表输出的任何内容都将是一个
数字
,但你不能它不再是一个
整数

还有一种相反的情况:

List<? super Number> list;

List一开始很难理解,但继承不适用于泛型,即如果B扩展了A,
List
不是
List
的“子类”(不能指定给)。
List此外,
List主要区别在于,如果泛型形式用作基类(或接口)中方法的参数或返回类型,它允许更大范围的类型签名计数为重写而不是重载

例如,以下代码是合法的(在Java 7中):

接口A
{

列表据我所知,没有区别。那不是真的。你可以有一个
列表
,其中添加
整数
s。ArrayList是错误的,这也不是他的问题的答案。他问这些表达式与他提供的示例中的不同。这不是他的问题的答案。他问这些表达式在哪里与他提供的例子不同。好吧,那么这个问题(对我来说)有点不清楚.无论如何,似乎cibercitizen1正在假设ArrayList和ArrayList@Malcom:很好地解释了什么类型的东西可以添加到
列表中,或者不添加到
列表中。那么案例2:一个方法可以接受什么类型的列表呢?@cibercitizen1正如我在回答中所说,扩展
数字的东西的列表。可能是这样的方法类似于
列表
列表
。因此,您知道此列表将为您提供一个
编号
,但您不知道可以在其中输入什么。是的,它可以,这两种方法都必须处理异常。如果您有
列表
,并不意味着您不能在其中输入
B
List<Number> list;
List<? extends Number> list;
List<? super Number> list;
interface A
{
    List<? extends Number> getSomeNumbers();
}

class B implements A
{
    @Override
    public ArrayList<Integer> getSomeNumbers()
    {
        return new ArrayList<>();
    }
}