Java 如何将ArrayList转换为ArrayList
我给ArrayList加了一些值 在我需要将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<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是,但你可以定义输入类类型。我想这就是我需要的。你能给出一些代码示例吗?