可能重复:
Java:冒号(:)运算符有什么作用?
for (CreditCard cc : credit1)
Run Code Online (Sandbox Code Playgroud)
&
if (index instanceof RewardCard)
Run Code Online (Sandbox Code Playgroud)
是":"和instanceof相同?所以我可以使用?
if (index : RewardCard)
Run Code Online (Sandbox Code Playgroud)
要么
for (CreditCard cc instanceof credit1)
Run Code Online (Sandbox Code Playgroud)
如果没有,有人可以解释一下":"是什么意思吗?
我有一个类PartA和一个类PartB派生类PartA.我有一个PartA包含a和b部分的类型列表.我需要确定当我循环它时它实际上是哪种类.但如果我这样做:
for (PartA i : parts) {
if (i instanceof PartA) {
//some logic
}
Run Code Online (Sandbox Code Playgroud)
无论它实际上是哪一类,它仍然会成立:a或b.
我做错了什么,如果没有,我能做些什么来达到预期的效果呢?
当我尝试编译并运行这部分代码时,我得到了这个错误:
线程"AWT-EventQueue-0"中的异常java.lang.Error:未解决的编译问题:无法将侦听器解析为变量
at FormPanel.setFormListener(FormPanel.java:273)
at MainFrame.<init>(MainFrame.java:37)
at App$1.run(App.java:10)
Run Code Online (Sandbox Code Playgroud)
代码是这样的:
// public void setFormListener(DailyFormListener listener) {
// this.formDayListener = listener;
//
// }
public void setFormListener(Object o) {
if (o instanceof DailyFormListener) {
this.formDayListener = listener;
}
else if (o instanceof GeneFormListener) {
this.geneFormListener = listener;
}
else if (o instanceof LabFormListener) {
this.labFormListener = listener;
}
}
Run Code Online (Sandbox Code Playgroud)
这是从第273行开始的.我的问题是,它运行时已经注释掉了上面的部分,但是现在在未注释的部分中.我需要更改什么才能让setFormListener足够通用来处理这个问题?我可以根据需要提供更多代码或信息.
instanceof如果我想要使用方法签名不同的不同验证器,如何避免在这种情况下使用和转换?
代码
for(BatchValidator validator : validators) {
try {
if (validator instanceof BatchErrorValidator) {
((BatchErrorValidator<T>) validator).validate(targets);
} else if (validator instanceof BatchWarningValidator) {
((BatchWarningValidator<T>) validator).validate(targets, header);
}
} catch (BatchValidationException e) {
handleImportExceptions(e, header.getSequenceId());
}
}
Run Code Online (Sandbox Code Playgroud) 我想简化代码(例如使用Optionals)
private String formatValue(Object value) {
if (value == null) {
return null;
} else if (value instanceof Date) {
return MyUtils.formatDate((Date)value, Constant.DATE_FORMAT_YYYYMMDD_HHMMSS);
}
return value.toString();
}
Run Code Online (Sandbox Code Playgroud)
值可以是:null,String,Date