我有一个方法返回一个带有引用数据的对象类型。此对象可以是classa的单个示例,也可以是classb的示例列表。如果它是classa的单个示例,我可以很容易地将其转换为:
(ClassA) data
现在,我被第二种情况困住了,因为在第二种情况下,对象确实是一个 List<ClassB> ,如何将对象数据强制转换为 List<ClassB> 数据列表?
List<ClassB>
Object data ----> List<ClassB>
谢谢您
wsewodh21#
你需要使用 instanceof 检查对象的类型如果您使用的是java-16
instanceof
if (data instanceof ClassA singleObject) { // do something with singleObject} else if (data instanceof List list) { // do something with list}
if (data instanceof ClassA singleObject) {
// do something with singleObject
} else if (data instanceof List list) {
// do something with list
}
否则
if (data instanceof ClassA) { ClassA singleObject = (ClassA) data; // do something with singleObject} else if (data instanceof List) { List<ClassB> list = (List<ClassB>) data; // do something with list}
if (data instanceof ClassA) {
ClassA singleObject = (ClassA) data;
} else if (data instanceof List) {
List<ClassB> list = (List<ClassB>) data;
请注意,您将得到一个编译器警告,因为您正在进行未检查的赋值。你可以用 @SuppressWarnings("unchecked") 论使之消失的方法
@SuppressWarnings("unchecked")
2nbm6dog2#
下面是一个如何操作的示例:
import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { Object o = new ArrayList<Object>(); List<Object> l = (List<Object>) o; }}
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
Object o = new ArrayList<Object>();
List<Object> l = (List<Object>) o;
2条答案
按热度按时间wsewodh21#
你需要使用
instanceof
检查对象的类型如果您使用的是java-16
否则
请注意,您将得到一个编译器警告,因为您正在进行未检查的赋值。你可以用
@SuppressWarnings("unchecked")
论使之消失的方法2nbm6dog2#
下面是一个如何操作的示例: