java - Object[] 不能转换为 resultado[]

标签 java android

<分区>

我有这个 resultado 类,我在其中实现了 DataBaseManager 在一个 ArrayList 方法中所做的事情:

包 moviles.fingertwist;

public class resultado {

    private String id;
    private String resultado;

    public resultado(String Id, String Resultado)
    {
        id=Id;
        resultado = Resultado;
    }

    public String getResultad()
    {
        return resultado;
    }

}

并且有这个类 DataBaseManager.java 我有与数据库交互的方法,:

public ArrayList ListaChida() { 

final ArrayList dirArray = new ArrayList(); Cursor d = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);

d.moveToFirst();
while (!d.isAfterLast() ) {
resultado e = new resultado(d.getString(0),d.getString(1)); dirArray.add(e); d.moveToNext(); } d.close();

return dirArray;
}

所以稍后在 lista 中,我想创建数组的 ListView,但由于错误而无法创建它...:C 代码如下:

public class lista extends Activity { ListView listView ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lista);



    // Get ListView object from xml
    listView = (ListView) findViewById(R.id.list);

    //recibe datos de resultado

    DataBaseManager dbm = new DataBaseManager(this);
    resultado[] dirArray=   (resultado[]) dbm.ListaChida().toArray();
    String[] Res = new String[dbm.ListaChida().size()];
    for(int i = 0; i< dbm.ListaChida().size(); i++)
    {
        resultado res=dirArray[i];
        Res[i] = res.getResultad();
    }



    // Define a new Adapter
    // First parameter - Context
    // Second parameter - Layout for the row
    // Third parameter - ID of the TextView to which the data is written
    // Forth - the Array of data

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
      android.R.layout.simple_list_item_1, android.R.id.text1, Res);


    // Assign adapter to ListView
    listView.setAdapter(adapter); 

}
}

我收到错误:object[] cannot be cast to resultado[] ??谁能告诉我如何修复它以及为什么它会抛出错误?

最佳答案

您调用的 toArray 版本返回一个 Object 数组。您不能将 Object 数组转换为非 Object 数组。相反,使用其他版本的 toArray:

resultado[] dirArray= dbm.ListaChida().toArray(new resultado[0]);

有充分的理由禁止此类型转换。想象一下如果你可以施放它会发生什么:

Object [] a = new Object[2];
a[0] = "blue";
a[1] = "red";
String [] b = (String []) a; // a and b now refer to the same array; this does NOT work!!
a[0] = new Date(); 
// What's b[0] now?

关于java - Object[] 不能转换为 resultado[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174749/

相关文章:

java - Kotlin 中的通用转换

java - Android findViewById 工具栏返回 null

java - 当 'KEY' 不存在状态时 ctx.stub.getState(KEY) 返回什么?

java - 如何访问 JpCap 数据包中的数据包信息

android - 如何在 Android 的纯文本文件中执行查询?

Android - 方向改变的动态 fragment 问题

android - 防止Cordova Android在后台运行

java - 繁体和简体中文不被分开拾取

java - 为什么在一种情况下乘以大数会得出错误的结果?

java listFiles() 仅返回文件