Nếu tôi sử dụng lớp này:Tại sao tôi gặp lỗi loại không thể sửa đổi?
public class BooleanTest {
public static void main(String args[]) {
final Object[] objarray = new Object[2];
try {
objarray[0] = "Hello World!";
objarray[1] = false;
} catch (NullPointerException e) {
}
boolean bool = (boolean) objarray[1];
}
}
Nó hoạt động tốt và tôi có thể gán rằng boolean
không có vấn đề. Tại sao tôi không thể làm điều tương tự khi yêu cầu người dùng nhập mật khẩu?
final Object result[] = new Object[2];
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,0));
JLabel label = new JLabel();
label.setHorizontalAlignment(SwingConstants.LEADING);
JTextField input = new JTextField();
input.setHorizontalAlignment(SwingConstants.CENTER);
JCheckBox checkbox = new JCheckBox("Pair with this device");
checkbox.setHorizontalAlignment(SwingConstants.LEADING);
panel.add(label);
panel.add(input);
panel.add(checkbox);
if (wrong) {
label.setText("Wrong password. Please enter the password from the other device:");
} else {
label.setText("Please enter the password from the other device:");
}
int response = JOptionPane.showConfirmDialog(SendGUI.this, panel, "Enter password", JOptionPane.OK_CANCEL_OPTION);
if (response == JOptionPane.OK_OPTION) {
result[0] = input.getText();
result[1] = (boolean)checkbox.isSelected();
} else {
result[0] = null;
result[1] = false;
}
}
});
} catch (InterruptedException e) {
} catch (InvocationTargetException e) {
}
boolean pair = (boolean)result[1]; //inconvertible type, expected boolean found Object
Theo như tôi có thể thấy tôi đang làm điều tương tự trong cả hai trường hợp nhưng ví dụ đầu tiên biên soạn tốt trong khi ví dụ thứ hai thì không.
bạn có thể đăng lỗi bạn nhận được trong mã cuối cùng không? –
@MiguelPrz nó đã được trong mã của tôi, 'loại không thể thay đổi, dự kiến boolean tìm thấy Object' – Logan
@LoganDam: Đây có phải là một lỗi thời gian biên dịch? Bạn đang sử dụng cùng một trình biên dịch (với các tùy chọn tương tự) trong cả hai trường hợp? –