2014-01-13 5 views
1

У меня есть класс, NewBeautifulKiwi, который имеет геттеры и сеттеры.невосполнимые типы: не могут быть преобразованы в

Когда я пытаюсь установить:

public void setKiwi(String Kiwi) { 
    this.Kiwi = Kiwi; 
} 

со значениями из TextField, как:

@FXML 
TextField KIWITextField; 
NewBeautifulKiwi newBeautifulKiwi = new NewBeautifulKiwi() 
    .setKiwi(KIWITextField.getText()); 

Я получаю сообщение об ошибке: incopatible типов: не могут быть преобразованы в NewBeautifulKiwi

Вот классы в полном объеме (необходимые экстракты по этому вопросу)

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.application.Platform; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.Pane; 
import wakiliproject.Forms.AddNew.DB.NewBeautifulKiwi; 

public class SampleController implements Initializable, ControlledScreen { 

    @FXML 
    TextField KIWITextField; 
    NewBeautifulKiwi newBeautifulKiwi = new NewBeautifulKiwi().setKiwi(KIWITextField.getText()); 
} 


import java.io.Serializable; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 

@Entity 
public class NewBeautifulKiwi implements Serializable { 

    @Id 
    @GeneratedValue 
    private int KiwiId; 
    private String Kiwi; 

    public int getKiwiId() { 
     return KiwiId; 
    } 

    public void setKiwiId(int KiwiId) { 
     this.KiwiId = KiwiId; 
    } 

    public String getKiwi() { 
     return Kiwi; 
    } 

    public void setKiwi(String Kiwi) { 
     this.Kiwi = Kiwi; 
    } 
} 

Как передать значение TextField в сеттер?

+0

Есть опечатка в описании вашего сообщения об ошибке, или есть опечатка в самом сообщении об ошибке? Если это последнее, мы должны сохранить опечатку в вашем вопросе, чтобы другие могли ее найти. –

ответ

1

Возвращаемое значение new NewBeautifulKiwi().setKiwi(KIWITextField.getText()); определяется подписью setKiwi, что: public void setKiwi(String Kiwi).

Так что выражение ничего не возвращает (void), и вы не можете назначить его переменной. Вы можете разделить эти два утверждения:

NewBeautifulKiwi newBeautifulKiwi = new NewBeautifulKiwi(); 
newBeautifulKiwi.setKiwi(KIWITextField.getText()); 

Или использовать текучий стиль интерфейса (мое личное предпочтение в этом случае, так как она позволяет цепи сеттеры):

public NewBeautifulKiwi setKiwi(String Kiwi) { 
    this.Kiwi = Kiwi; 
    return this; 
} 

//Now that will compile 
NewBeautifulKiwi newBeautifulKiwi = new NewBeautifulKiwi().setKiwi(KIWITextField.getText()); 
+0

Привет [assylias] (http://stackoverflow.com/users/829571/assylias). Второе решение, свободный интерфейс, работает. Первый - нет. Ошибки, которые я получаю со второй являются: \t пакет newBeautifulKiwi не существует, \t ожидается, \t пакет KIWITextField не существует. \t В чем может быть проблема? – ILikeProgramming

+0

@ user3189827 Включили ли вы две линии в методе внутри класса? Эта ошибка обычно возникает из-за отсутствия скобок или операторов, которые не заключены в метод или объявления нескольких классов в одном файле и т. Д. – assylias

+0

Wow! Спасибо чувак. Теперь это работает. Я должен был поставить два утверждения в методе. – ILikeProgramming

0
NewBeautifulKiwi newBeautifulKiwi = new 
          NewBeautifulKiwi().setKiwi(KIWITextField.getText()); 

Здесь setKiwi недействителен. не возвращая ничего. Вы можете изменить свой код следующим образом

new NewBeautifulKiwi().setKiwi(KIWITextField.getText());` 

Вы можете использовать свой текущий код, если ваш setKiwi метода следующим образом.

public NewBeautifulKiwi setKiwi(String Kiwi) { 
this.Kiwi = Kiwi; 
return kiwi; 
} 
0
NewBeautifulKiwi newBeautifulKiwi = new NewBeautifulKiwi(); 
newBeautifulKiwi.setKiwi(KIWITextField.getText()); 
Смежные вопросы