こんにちは、碇さん。 高橋(徹)です。
>
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@...