ヤコポLanzoni:
私はここで初心者のエラーを作ることも恐れています。私が持っているActionListener
以下のが、私は警告を取得Unchecked cast: 'java.lang.Object' to 'javax.swing.JComboBox<java.lang.String>'
内部のif
声明を。どのように私はそれを解決することができますか?私はからメソッドを呼び出したいJComboBox
API。
私は警告を抑制することに興味を持っていないです。
public class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
Object source = actionEvent.getSource();
JComboBox<String> comboBox;
if (source instanceof JComboBox) {
comboBox = (JComboBox<String>) source;
}
}
}
TROJAN:
抑制することなく警告を削除するには、ジェネリックと妥協し、コードへの変更する必要があります。
JComboBox<?> comboBox;
if (source instanceof JComboBox) {
comboBox = (JComboBox<?>) source;
}
あなたの中からいずれかの方法を使用しようとしている場合やJComboBox
ジェネリックを使用すると<E>
、あなたはそこにキャストを使用することができます。例えば:
String s = (String) comboBox.getItemAt(0);
説明:
コンパイラは、あなたがするかどうかを知る方法はありませんので、警告が与えられたJComboBox
ありますJComboBox<String>
かJComboBox<Integer>
。
キャストは実行時のものであり、Javaにおけるジェネリック型の安全性を確保するために、コードを読みやすくするためだけのプレースホルダです。種類消去、コンパイラのアップデートを使用して/バイトコード(詳細は発生しながら文をキャストしてジェネリックを含むすべての文修正ここに)。