如何将java.lang.Object转换为ArrayList?
我有一个有效的如何将java.lang.Object转换为ArrayList?,java,java-6,Java,Java 6,我有一个有效的ArrayList对象,格式为java.lang.object。我必须再次将对象转换为数组列表。我试过这个: Object obj2 = from some source . . ; ArrayList al1 = new ArrayList(); al1 = (ArrayList) obj2; System.out.println("List2 Value: "+al1); 对象obj2=来自某个源; ArrayList al1=新的ArrayList(); al1=(Array
ArrayList
对象,格式为java.lang.object
。我必须再次将对象
转换为数组列表
。我试过这个:
Object obj2 = from some source . . ;
ArrayList al1 = new ArrayList();
al1 = (ArrayList) obj2;
System.out.println("List2 Value: "+al1);
对象obj2=来自某个源;
ArrayList al1=新的ArrayList();
al1=(ArrayList)obj2;
System.out.println(“列表2值:+al1”);
但它正在打印null
。
我该怎么做 这只会导致
null
如果obj2
在演员阵容之前就已经null
,那么你的问题比你想象的要早。(另外,如果要立即为其赋值,则无需构造新的ArrayList来初始化al1
。只需说ArrayList al1=(ArrayList)obj2;
),而是将其强制转换为对象数组
Object obj2 = from some source . . ;
Object[] objects=(Object[])obj2;
转换失败(java.lang.ClassCastException:java.lang.String不能转换为java.util.ArrayList),因为您肯定有一些对象不是ArrayList。验证不同对象的类型。不建议直接从
java.lang.Object
转换为包含T元素的ArrayList
,因为这可能导致强制转换异常。建议的方法是首先转换为T
的基本数组,然后使用array.asList(T[])
从javajavax.ws.rs.core.Response
获取实体的方法之一如下-
T[] t_array = response.readEntity(object);
ArrayList<T> t_arraylist = Arrays.asList(t_array);
T[]T\u数组=response.readEntity(对象);
ArrayList t_ArrayList=Arrays.asList(t_array);
您仍然会收到未选中的强制转换警告。您可以创建一个静态util方法,将任何集合转换为Java列表
public static List<?> convertObjectToList(Object obj) {
List<?> list = new ArrayList<>();
if (obj.getClass().isArray()) {
list = Arrays.asList((Object[])obj);
} else if (obj instanceof Collection) {
list = new ArrayList<>((Collection<?>)obj);
}
return list;
}
一个有趣的注意事项:在JavaFX应用程序线程上尝试从对象强制转换到列表似乎总是导致ClassCastException 我和你有同样的问题,没有答案。在玩了一段时间后,我唯一能把范围缩小到线。运行代码以在UI线程以外的任何其他线程上强制转换,正如预期的那样成功,正如本节中的其他答案所示 因此,请注意您的源代码没有在JavaFX应用程序线程上运行。
Object Object=new Object();
Object object = new Object();
// First way
List objects1 = new ArrayList<Object>();
objects1.add(object);
// second way
List<Object> objects2 = Arrays.asList(object);
// Third way
List<Object> objects3 = Collections.singletonList(object);
//第一条路
List objects1=new ArrayList();
objects1.添加(object);
//第二条路
List objects2=Arrays.asList(对象);
//第三条路
List objects3=集合。singletonList(对象);
我希望这会对您有所帮助
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
Object obj2 =null;
ArrayList al1 = (ArrayList) obj2;
al1 = (ArrayList) obj2;
System.out.println("List2 Value: " + al1);
}
}
在将obj2对象强制转换为ArrayList之前,该对象默认为null。这就是为什么将“al1”打印为null。如果它打印为null,则在执行此代码之前您会遇到问题;隐藏在“源…”中的错误是什么,对我来说,它工作正常。还提供更多详细信息,对象obj2=来自某个源;对于上面的obj2,您正在帮助下面是我尝试过的代码,它工作正常;al11.添加(“a”);al11.添加(“b”);对象obj2=al11;ArrayList al1=新的ArrayList();al1=(ArrayList)obj2;System.out.println(“列表2值:+al1”)@达莫达:你的第二句话对我也很管用。但是我的隐藏方法以对象的形式返回字符串,因为我得到以下异常:线程“main”java.lang.ClassCastException中的异常:java.lang.String不能转换为java.util.ArrayListBJ2不为null。我打印了obj2的值。实际上obj2是字符串的形式。
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
Object obj2 =null;
ArrayList al1 = (ArrayList) obj2;
al1 = (ArrayList) obj2;
System.out.println("List2 Value: " + al1);
}
}