Lambda表达式中使用的接口和类是否可以放在单独的文件中?

时间:2017-09-23 13:58:23

标签: java file class lambda interface

这可能是一个有点愚蠢的问题,但我对Lamda Expressions和General编程很新。

在尝试使用Lambda Expression之后:

interface Starter {
    public void start();
}

class Machine {
public void run( Starter s ) {
    System.out.println("Running code....");
    s.start();
 }
}
public static void main(String[] args){
    Machine mac1 = new Machine();
    mac1.run(() -> System.out.println("Hello World"));
}

这让我想知道,如果界面和类(本例中的机器)可以移动到单独的文件中,这仍然有用吗?我尝试过这样做我认为它会起作用,但这不起作用,这可能吗?如果是这样,你怎么做?

2 个答案:

答案 0 :(得分:1)

只要您的主类可以看到Machine类和Starter接口,那么这是完全可能的。

我的猜测是你将Starter接口移动到了另一个包而不是主类,并且因为你没有包含“public”修饰符,所以它不再对主类可见并且将拒绝编译。

答案 1 :(得分:0)

如果我理解您的问题是正确的,那么只需添加一个单独的类(例如App.class),其中包含public static void main方法:

public interface Starter {

    public void start();

}

public class Machine {

    public void run( Starter s ) {
        System.out.println("Running code....");
        s.start();
    }

}


public class App {

    public static void main(String[] args){
        Machine mac1 = new Machine();
        mac1.run(() -> System.out.println("Hello World"));
    }

}