Eclipse在运行时之前不会报告错误

时间:2017-11-13 16:01:58

标签: java eclipse eclipse-plugin

我试图用一些凌乱的技巧来携带一个IMarker ProblemDescriptor个对象。

ProblemDescriptor problem = new ProblemDescriptor(... my arguments...); marker.setAttribute("PROBLEM_DESCRIPTOR", problem);

稍后我想检查属性是否已设置,请使用其中的信息。

开发时未报告错误,但在运行时我收到错误:

The attribute value type is com.localhost.problems.ProblemDescription and expected is one of java.lang.String, Boolean, Integer

这是一个特殊情况/该代码中的错误实现还是我应该使用仅在运行时报告的那种错误?

2 个答案:

答案 0 :(得分:1)

您使用的setAttribute方法是

public void setAttribute(String attributeName, Object value)

由于第二个参数是Object,因此无法在编译时检查是否正确,但是Javadoc清楚地说明了这一点:

  

使用给定名称设置属性。该值必须为null或   以下类之一的实例:String,Integer或Boolean。   如果该值为null,则认为该属性未定义。

     

属性值不能是UTF编码超过65535的String   字节。在持久性标记上,此限制由断言强制执行。

替代设计可能是使用StringIntegerBoolean第二个参数替换3个方法,但API设计者决定不这样做。

答案 1 :(得分:0)

确保正确调用您的方法。该错误看起来像是在传递

  

com.localhost.problems.ProblemDescription

对于期待别的东西的方法。

...省略论据没有帮助