2017-11-13 9 views
0

IMarkerProblemDescriptorオブジェクトを運ぶために面倒なトリックをしようとしていました。その後、私は属性が設定されている場合、そこから情報を利用することをチェックしたかったに実行時までエラーが報告されません

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

は、それは/そのコードで悪い実装特殊なケースであるか、私は、エラーのこれらの種類の慣れる必要があります実行時にのみ報告されますか?

答えて

1

を支援されていない

...しかし、このためのJavadocははっきり言う:

Sets the attribute with the given name. The value must be null or an instance of one of the following classes: String, Integer, or Boolean. If the value is null, the attribute is considered to be undefined.

The attribute value cannot be a String whose UTF encoding exceeds 65535 bytes. On persistent markers this limit is enforced by an assertion.

代替設計が持つ3つの方法でこれを置き換えることだっただろうString,IntegerおよびBoolean第2引数であるが、API設計者はそれをしないことに決めた。

0

メソッドが正しく呼び出されていることを確認してください。そのエラーは、あなたが通過しているように見えます。

com.localhost.problems.ProblemDescription 

何か他のものを期待している方法です。引数を除外すると、第二引数がObject正確にはチェックはコンパイル時に行われないことができているので、使用しているsetAttribute方法は、

public void setAttribute(String attributeName, Object value) 

ある

+0

これは私が指摘していることですが、メソッドに値を渡しても問題は報告されません –

+0

2番目のパラメータは 'Object'であると受け付けられますが、後で値'String、Boolean、Integer'以外のものです –

+0

私には、悪いプログラミングのように聞こえます –

関連する問題