有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android使用“instanceof”是确定“onItemSelected”中微调器返回的项目类型的唯一方法吗?

如标题所示:

有没有办法确定从^{中的微调器获得的项的类型(通常是String,如果是从资源改编的,或者是通用的Object,如果是通过编程改编的)?在本例中,我指的是在Java中以编程方式填充的,但据我所知,对于从字符串资源数组创建的一个也是一样的

然而,很明显,我们创造了我们的旋转器,我们知道其中的一切是什么类型的。如果它来自资源,可能是字符串。如果以编程方式完成,则可能是某种ObjectView。但是,onItemSelected的签名如下所示:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    // actions

    // to get the item, you would usually do something like:
    parent.getItemAtPosition(pos);
}

显然,我们从中得到的类型是?,换句话说,一个泛型Object

因此,如果我们确切地知道它是什么类型,我们当然可以这样做(用Integer显示的示例):

Object itemSelected = parent.getItemAtPosition(pos);

if (itemSelected instanceof Integer) doSomeMath((Integer) itemSelected);

但我觉得这并不优雅。当然,至少在我给出的简单情况下是有效的(比如Integer)。它甚至可能对处理多个不同类型的Spinner都运行在同一个listener上很有用——我实际上还没有尝试过

但似乎应该有一种方法可以让签名简单地是这样的:

public void onItemSelected(AdapterView<Integer> parent, View view, int pos, long id)

共 (0) 个答案