【问题标题】:Java syntax <?> explanationJava语法<?>解释
【发布时间】:2011-07-09 04:57:53
【问题描述】:

您好,我在Grid view 的 android 文档中遇到了以下代码。

gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
        }
    });

在这 (作为stackoverflow添加的空间不允许没有空格)指示/做什么?

【问题讨论】:

  • 这与安卓无关。但是你应该添加generics标签

标签: java generics syntax


【解决方案1】:

> 是泛型类型的通配符,这意味着 AdapterView 的泛型类型可以是任何东西。

更具体地说,在这种情况下,方法上的参数可以接收具有绝对任何泛型类型的 AdapterView。请注意,如果您想限制可以执行的泛型类型:

AdapterView<? extends myClass)

这将泛型类型限制为 myClass 或任何扩展 myClass 的类型。

就像一个注释:

 AdapterView <?> and AdapterView<? extends Object> 

是相同的。

您可以在通配符部分找到更多信息

Java generics documentation

【讨论】:

  • 所以基本上当我们不想指定对象的类型时使用它(在集合或向量中需要)并且我们应该希望它是一般情况方法吗?
  • @Footy 是的,当您希望允许您的参数是任何泛型类型而不限制它时使用它。如果你想限制它,你可以使用 extends myClass>,那么它将只接受扩展的泛型或 myClass。
猜你喜欢
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
相关资源
最近更新 更多