在Java8中将匿名内部方法转换为Lambda
如何使用Java 8将以下代码(特别是public void run()方法)转换为lambda在Java8中将匿名内部方法转换为Lambda,java,lambda,java-8,Java,Lambda,Java 8,如何使用Java 8将以下代码(特别是public void run()方法)转换为lambda public class SampleApp { public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { for (int i
public class SampleApp {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Hello " + i);
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t1.start();
}
}
公共类SampleApp{
公共静态void main(字符串[]args){
线程t1=新线程(新的可运行线程(){
@凌驾
公开募捐{
对于(int i=0;i<10;i++){
System.out.println(“Hello”+i);
试一试{
睡眠(100);
}
捕捉(中断异常e){
e、 printStackTrace();
}
}
}
});
t1.start();
}
}
尝试:
Thread t1 = new Thread(new Runnable() -> {
for (int i = 0; i < 10; i++) {
System.out.println("Hello " + i);
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
e.printStackTrace();
}
};
);
Thread t1=新线程(new Runnable()->{
对于(int i=0;i<10;i++){
System.out.println(“Hello”+i);
试一试{
睡眠(100);
}
捕捉(中断异常e){
e、 printStackTrace();
}
};
);
但是Eclipse不断抛出错误…只需删除
新的Runnable
:
Thread t1 = new Thread(() -> { /* body */ });
您可能想考虑将该实体拉入“真实”的方法中,并使用方法引用代替:
static void doSomething() { /* body */ }
public static void main(String[] args) {
Thread t1 = new Thread(SampleApp::doSomething);
}
大的lambda实体不是特别可读。只需删除
新的Runnable
:
Thread t1 = new Thread(() -> { /* body */ });
您可能想考虑将该实体拉入“真实”的方法中,并使用方法引用代替:
static void doSomething() { /* body */ }
public static void main(String[] args) {
Thread t1 = new Thread(SampleApp::doSomething);
}
大的lambda主体不是特别可读。您好,如果您希望它内嵌,您可以这样做
final Thread t1 = new Thread(()->{
for (int i = 0; i < 10; i++) {
System.out.println("Hello " + i);
try { Thread.sleep(100); }
catch (final InterruptedException e) {
e.printStackTrace();
}
}
});
final Thread t1=新线程(()->{
对于(int i=0;i<10;i++){
System.out.println(“Hello”+i);
试试{Thread.sleep(100);}
捕获(最终中断异常e){
e、 printStackTrace();
}
}
});
嗨,如果你想让它内嵌,你可以这样做
final Thread t1 = new Thread(()->{
for (int i = 0; i < 10; i++) {
System.out.println("Hello " + i);
try { Thread.sleep(100); }
catch (final InterruptedException e) {
e.printStackTrace();
}
}
});
final Thread t1=新线程(()->{
对于(int i=0;i<10;i++){
System.out.println(“Hello”+i);
试试{Thread.sleep(100);}
捕获(最终中断异常e){
e、 printStackTrace();
}
}
});
删除新的可运行的
。顺便说一句:仅仅因为你可以使用lambdas并不意味着你必须使用它们。我发现使用方法句柄更具可读性。如果lambda超过2行,这通常是个好主意。删除新的可运行的
。顺便说一句:仅仅因为你可以使用lambdas并不意味着你必须使用它们如果lambda大于2行,那么使用方法句柄通常是个好主意。