« Return to Thread: バインドするコードの修正

Re: バインドするコードの修正

by TAKAHASHI,Toru :: Rate this Message:

Reply to Author | View in Thread

こんにちは、碇さん。 高橋(徹)です。

> http://www.02.246.ne.jp/~torutk/swetools/netbeans/netbeans60_desktopapp.html
> こちらを参考に
> NetBeans6.1を使用してJTableに自作beanをバインドしているのですが
> コンパイル時自動生成されたコードが無検査呼び出しと出てしまいます
> これを訂正したいのですが、コード自体も変更できないためどうしたものかと
> 悩んでいます

ツールが生成するコードなので、コンパイル時のunchecked警告は気に留めて
いませんでした。コンパイル時にunchecked警告が出る仕組みを少し追って
みます。

beansbindingのELPropertyクラスはGenericsクラスとして定義されています。
  class ELProperty<S,V>
一方、NetBeansの生成するコードは、GenericsクラスであるELPropertyクラスの
型パラメータに型変数を指定せず、
  ELProperty ep = ELProperty.create("${mylist}");
のように(*1)raw typeとして記述しています。

*1) 実際に生成されるコードを省略して引用

このELPropertyインスタンスを使用している一例にJTableBindingクラスの
addColumnBindingメソッドがありますが、このメソッドは引数にProperty<E, ?>
型を取ると定義されています。
ELPropertyはPropertyのサブクラスですが、raw typeで使用しているため、
コンパイル時に警告(unchecked)「未チェックまたは安全ではありません」が
生じます。

コンパイルオプションに-Xlint:uncheckedを加えれば、「無検査メソッド
呼び出し」のような警告が生じます。

BeansbindingのAPIを詳しく調査していないため、上記をどう修正すれば
Generics的に正しいコードになるかは現時点では分かりません。
# Beansbindingは、かなりGenericsなAPIですね。一方SwingやJavaBeansは
# まったく非GenericsなAPIなので、両者がうまくすり合うか少々疑問に
# 感じます。

このunchecked警告を解消するには、
(1) NetBeansの生成するコードがGenerics対応となるようNetBeansを修正する
(2) NetBeansの生成したコードを修正してGenerics対応とする
(3) BeansbindingのAPIでGenericsでないものを提供する
(4) @SuppressWarnings("unchecked")を、NetBeansが生成するコード
 void initComponents() {...} の直前に記述する
といった対応が考えられます。
(1)は手に余る、(2)はGUIデザイナーが使えなくなる、(3)はJSRで仕様策定
されたものの変更なのでそれなりのプロセスが発生する、
といったところで現実的なのは(4)でしょうか。


---------------------------------------------------------------------
To unsubscribe, e-mail: nbdiscuss_ja-unsubscribe@...
For additional commands, e-mail: nbdiscuss_ja-help@...

 « Return to Thread: バインドするコードの修正

LightInTheBox - Buy quality products at wholesale price