Java 如何将ArrayList转换为ArrayList

Java 如何将ArrayList转换为ArrayList,java,android,object,arraylist,Java,Android,Object,Arraylist,我给ArrayList加了一些值 在我需要将ArrayList转换为ArrayList之后 我该怎么做?例如: ArrayList<AdListData> array = new ArrayList<AdListData>(); array = mData; 为什么我要这么做?我使用AsyncTask并在onPostExecute上执行这样的获取数据 protected void onPostExecute(ArrayList<Object> result)

我给ArrayList加了一些值

在我需要将ArrayList转换为ArrayList之后 我该怎么做?例如:

ArrayList<AdListData> array = new ArrayList<AdListData>();
array = mData;
为什么我要这么做?我使用AsyncTask并在onPostExecute上执行这样的获取数据

protected void onPostExecute(ArrayList<Object> result) {
    // Pass the result data back to the main activity

mDownloadCompleteListener.getDownloadCompleteState(result);
}
ArrayList<Object> mData = new ArrayList<Object>();
if(mType == "get_ad_data")
{

  AdListData data = new AdListData();
  data.Id = json_data.getInt("ad_uid");
  data.User_id = json_data.getInt("user_id");
  mData.add(data);
}
else
{
  AnotherClass data = new AnotherClass();
  data.Id = json_data.getInt("ad_uid");
  data.User_id = json_data.getInt("user_id");
  mData.add(data);
}

return mData;
此示例显示了一个仅针对类型为arraylist的get

ArrayList<Object>

但在我的例子中,我想用它来处理不同的对象,像这样

protected void onPostExecute(ArrayList<Object> result) {
    // Pass the result data back to the main activity

mDownloadCompleteListener.getDownloadCompleteState(result);
}
ArrayList<Object> mData = new ArrayList<Object>();
if(mType == "get_ad_data")
{

  AdListData data = new AdListData();
  data.Id = json_data.getInt("ad_uid");
  data.User_id = json_data.getInt("user_id");
  mData.add(data);
}
else
{
  AnotherClass data = new AnotherClass();
  data.Id = json_data.getInt("ad_uid");
  data.User_id = json_data.getInt("user_id");
  mData.add(data);
}

return mData;
` 当侦听器调用时,我想将其转换为所需的对象数组

@Override
public void getDownloadCompleteState(ArrayList<Object> ad_list) {
    // TODO Auto-generated method stub
    ArrayList<AdListData> array = new ArrayList<AdListData>();
            array = ad_list;
}

查看java泛型。当您传入数组列表时,请将其定义为ArrayList或ArrayList为什么您将生活变得太复杂

听说过模化器代码、接口、抽象类吗

我建议您在AdListData和其他类上编写一个接口或抽象类。。我想他们共享的是一种关系。。如果不是。。为这些..编写两个差异异步任务。。如果它们共享公共代码,您可以使用实用程序函数之类的函数。。 这样做,您的代码将更加可读和简单

现在,为了回答你的问题,我只写一些片段

public class Test {
    int data;

    public static <T extends Object> void foo(ArrayList<T> l) {
        T firstObj = l.get(0);

        if (firstObj != null) {
            if (firstObj instanceof Test) {
                System.out.println("yay.. I am list of test obj " + l);
            } else {
                System.out.println("m just another list.. :( " + l);
            }
    }

    @Override
    public String toString() {
        return data + "";
    }

    public static void main(String[] args) {
        ArrayList<Test> l = new ArrayList<Test>();

        Test t1 = new Test();
        t1.data = 1;

        Test t2 = new Test();
        t2.data = 2;

        Test t3 = new Test();
        t3.data = 3;

        Test t4 = new Test();
        t4.data = 4;

        l.add(t1);
        l.add(t2);
        l.add(t3);
        l.add(t4);

        foo(l);

        ArrayList<Integer> l2 = new ArrayList<Integer>();
        l2.add(1);
        l2.add(2);
        l2.add(3);
        l2.add(4);
        foo(l2);
    }
}  

为什么不首先使用ArrayList mData=new ArrayList。如果要将mData作为AdListData,那么有什么必要将其作为对象类型呢?我已经更新了一个问题,问题是您想要使用ArrayList排序的方式首先会破坏泛型的用途-编译时类型检查/安全性。更好的解决方案是定义AdListData和另一个类的接口/超类,并将其用作泛型类型,GetDownloadCompleteTestate和onPostExecute必须以ArrayList作为参数吗?这不是任何无界泛型类型中的隐式参数吗?是的,但至少它朝着可以使用MyDownloadListenerClass实现DownloadListenerOh,GetDownloadCompleteTestate是泛型接口的一部分吗?对不起,我没有任何Android编程经验…不,它不是一个通用接口,onPostExecute是,但你可以定义输入类类型。我想这就是我需要的。你能给出一些代码示例吗?