private void createObject(List<Activities> listOfActivities){
ABC object1 = new ABC();
String value = "";
if (listOfActivities instanceof XYZ) {
for (Activities list: listOfActivities) {
value= ((XYZ) list).getValue();
}
object1.setValue(value)
listOfActivities.add(object1);
}
}
在此方法中,listOfActivities具有一些XYZ类型的值。因此,应该执行“ if”块,该块正在检查listOfActivities是否为XYZ类的实例,但未执行。 为什么?
谢谢。
答案 0 :(得分:1)
List<String>
的类型为List
,而不是String
。
因此,您的List<Activity>
的类型为List
,对于false
将返回instanceof Activity
。
您从列表中检索的对象将是Activity
类型。
在这种情况下:
List< Activity > list = new ArrayList<>() ;
list.add( new Activity() ) ;
…请尝试:
boolean isListAnActivity = list instanceof Activity ; // false
boolean isElementOfListAnActivity = list.get( 0 ) instanceof Activity ; // true
请参阅此code run live at IdeOne.com。
isListAnActivity:false
isElementOfListAnActivity:是