java setters,不适用于参数(void)

时间:2012-12-27 20:46:27

标签: java

有没有人看到这里做错了什么,我得到这个错误“类型Guest中的方法giveTea不适用于参数(void),我是java +我的英语是坏的XD,所以这是什么意思。

Guest alice = new Guest();
alice.giveTea. (new Tea().setName("Roseship Tea"));
alice.giveTea. (new Tea().setSugar(false));
alice.giveTea. (new Tea().setMilk(true));'

3 个答案:

答案 0 :(得分:1)

setter return void,而不是实例本身。你应该这样做

Guest alice = new Guest();
Tea tea = new Tea();
tea.setName("Roseship Tea");
tea.setSugar(false);
tea.setMilk(true);
alice.giveTea(tea);

答案 1 :(得分:0)

new Tea().setName("Rosehip Tea")的返回类型为void,因为setName()不返回任何内容。这样做:

Tea t = new Tea();
t.setName("Rosehip Tea");

答案 2 :(得分:0)

setter方法通常具有返回类型void。方法给茶可能是茶。 您正在做的是创建一个对象并一起添加属性。您应该拆分它或创建一个立即设置一些属性的构造函数。

后者是一种好方法,因为Tea对象在创建之后应该是一个不可变对象。因此它的设计应该是这样的:

public class Tea{
 private final String teatype;
 private final boolean sugar;

 public Tea(String pType, boolean pSugar){
  teatype = pType;
  sugar = pSugar;
 }

 public String getTeatype(){
  return teatype;
 }
 ....

}