Я не могу передать значения моего поля со списком в объект.Ошибка «несовместимые типы: объект не может быть преобразован в размер» - PullRequest
0 голосов
/ 28 марта 2019

У меня есть группа Enums в моем проекте, которую я использовал для значений в своих полях со списком, но когда я передаю эти значения в мой класс 'pizza', это выдает мне ошибку.

public class Pizza {
    private Size size;
    private Crust crust;
    private Sauce sauce;
    private Topping topping1;
    private Topping topping2;
    public Pizza(Size size,Crust crust, Sauce sauce,
                 Topping topping1,Topping topping2){
        this.size=size;
        this.crust=crust;
        this.sauce=sauce;
        this.topping1=topping1;
        this.topping2=topping2;
    }
    //blah blah
------------------------------------------
//This is one of my enums.
public enum Size {
    SMALL(9.45),MEDIUM(11.87),LARGE(15.9);
    private double size;
Size(double size){this.size=size;}
public double getSize(){return this.size;}
public String getSizeAsString(){return String.valueOf(size);}

}
-------------------------------------------
public class PizzaForm extends javax.swing.JFrame {

    public PizzaForm() {
        initComponents();
        initiateComboBoxes();

    }
public void initiateComboBoxes(){
    cboSize.setModel(new DefaultComboBoxModel<>(Size.values()));
}
---------------------------------------------
private void btnAddToOrderActionPerformed(java.awt.event.ActionEvent evt) {                                              
        //when button clicked..
        Pizza pizza=new Pizza(cboSize.getSelectedItem(),cboCrust.getSelectedItem(),cboSauce.getSelectedItem(),cboTopping1.getSelectedItem(),cboTopping2.getSelectedItem());
    }

ошибка находится на второй последней строке. Это выдвигает на первый план всю мою строку с ошибкой. Кто-нибудь может сказать мне, в чем может быть проблема? Я ничего не конвертирую в «Размер», поэтому не знаю, в чем проблема. спасибо

1 Ответ

1 голос
/ 28 марта 2019

JComboBox#getSelectedItem() не является "обобщенным" и поэтому знает только то, что возвращает необработанный тип объекта. Вам нужно будет привести объект, возвращенный из этого метода, к соответствующему типу, например, в этом случае Size.

Итак:

Pizza pizza = new Pizza((Size) cboSize.getSelectedItem(), 
                        (Crust) cboCrust.getSelectedItem(), 
                        (Sauce) cboSauce.getSelectedItem(), 
                        (Topping) cboTopping1.getSelectedItem(), 
                        (Topping) cboTopping2.getSelectedItem());
...