Java Lambda消费者if语句
我在Java中无法正确编写Lambda Consumer if语句。使用者应该工作,以便在对象Teos为null或方法getNimi返回“”时,使用setNimi将名称更改为“nimi ei tiedosa”。这是家庭作业,所以我应该把Lambda作为一个参数来写,而不是在方法本身中Java Lambda消费者if语句,java,lambda,Java,Lambda,我在Java中无法正确编写Lambda Consumer if语句。使用者应该工作,以便在对象Teos为null或方法getNimi返回“”时,使用setNimi将名称更改为“nimi ei tiedosa”。这是家庭作业,所以我应该把Lambda作为一个参数来写,而不是在方法本身中 kokoelma.muuta(teos -> { if (teos.getNimi().equals("") || teos.getNimi() != null) {
kokoelma.muuta(teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null) {
teos.setNimi("nimi ei tiedossa")
}
};
);
if语句应该如何编写
NetBeans错误消息说;预期的,)预期的和非法的表达式开始,但我找不到正确的位置;及)
提前感谢。如果您有一个更复杂的
lambda
,您应该将它分成多行。如果你这样做,你犯了什么错误就会很清楚:
kokoelma.muuta(teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa")
};
);
lambda的较短版本,只能容纳一条语句,没有分号,并处理{
和}
:
kokoelma.muuta(teos -> if (teos.getNimi().equals("") || teos.getNimi() != null) teos.setNimi("nimi ei tiedossa"));
如果您有一个更复杂的
lambda
,您应该将它分成多行。如果你这样做,你犯了什么错误就会很清楚:
kokoelma.muuta(teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa")
};
);
lambda的较短版本,只能容纳一条语句,没有分号,并处理{
和}
:
kokoelma.muuta(teos -> if (teos.getNimi().equals("") || teos.getNimi() != null) teos.setNimi("nimi ei tiedossa"));
试着扩展它
kokoelma.muuta(teos -> {if (teos.getNimi().equals("") || teos.getNimi() != null) teos.setNimi("nimi ei tiedossa")};);
这就变成了:
kokoelma.muuta(teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa")
};
);
从这里可以清楚地看出,分号应该在语句后面,而lambda后面不应该有分号:
kokoelma.muuta(teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa");
}
);
或者,再次缩短:
kokoelma.muuta(teos -> { if (teos.getNimi().equals("") || teos.getNimi() != null) teos.setNimi("nimi ei tiedossa");});
试着扩展它
kokoelma.muuta(teos -> {if (teos.getNimi().equals("") || teos.getNimi() != null) teos.setNimi("nimi ei tiedossa")};);
这就变成了:
kokoelma.muuta(teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa")
};
);
从这里可以清楚地看出,分号应该在语句后面,而lambda后面不应该有分号:
kokoelma.muuta(teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa");
}
);
或者,再次缩短:
kokoelma.muuta(teos -> { if (teos.getNimi().equals("") || teos.getNimi() != null) teos.setNimi("nimi ei tiedossa");});
更多的是了解消费者如何在java8中工作。
它是任何接受类型并执行某些操作而不返回任何内容的函数。
对不起,我不知道muuta是什么,但它看起来像是对iterable kokoelma的某种迭代 为此,您可以定义一个独占消费者并将其传递给muuta 比如说
public static class Something{
String nimi;
public String getNimi() {
return nimi;
}
public void setNimi(String nimi) {
this.nimi = nimi;
}
}
然后我们可以创建一个消费者并将其作为函数传递
List<Something> kokoelma = new ArrayList<>();
Consumer<Something> checkAndSet =
teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa");
};
kokoelma.forEach(checkAndSet);
List kokoelma=new ArrayList();
消费者检查集=
teos->{
if(teos.getNimi().equals(“”| | teos.getNimi()!=null)
teos.setNimi(“nimi-ei Tiedosa”);
};
kokoelma.forEach(checkAndSet);
更多的是了解消费者如何在java8中工作。它是任何接受类型并执行某些操作而不返回任何内容的函数。
对不起,我不知道muuta是什么,但它看起来像是对iterable kokoelma的某种迭代 为此,您可以定义一个独占消费者并将其传递给muuta 比如说
public static class Something{
String nimi;
public String getNimi() {
return nimi;
}
public void setNimi(String nimi) {
this.nimi = nimi;
}
}
然后我们可以创建一个消费者并将其作为函数传递
List<Something> kokoelma = new ArrayList<>();
Consumer<Something> checkAndSet =
teos -> {
if (teos.getNimi().equals("") || teos.getNimi() != null)
teos.setNimi("nimi ei tiedossa");
};
kokoelma.forEach(checkAndSet);
List kokoelma=new ArrayList();
消费者检查集=
teos->{
if(teos.getNimi().equals(“”| | teos.getNimi()!=null)
teos.setNimi(“nimi-ei Tiedosa”);
};
kokoelma.forEach(checkAndSet);
回答得很好!对于这一个,我宁愿使用非缩短的lamba。非常感谢您的快速回复,我尝试将其分解,但没有发现错误。现在它按预期工作。回答得很好!对于这一个,我宁愿使用非缩短的lamba。非常感谢您的快速回复,我尝试将其分解,但没有发现错误。现在它按预期工作了。谢谢你们两个。谢谢你们两个。你说“我应该把Lambda作为一个参数来写,而不是写在方法本身”是什么意思?您的意思是需要单独创建lambda,作为Consumer
的一个实例,然后编写类似kokokoelma.muuta(myLambda)的代码代码>?您所说的“我应该将Lambda作为参数而不是方法本身编写”是什么意思?您的意思是需要单独创建lambda,作为Consumer
的一个实例,然后编写类似kokokoelma.muuta(myLambda)的代码代码>?