Java Lambda表达式中使用的接口和类是否可以放在单独的文件中?
这可能是一个有点傻的问题,但我对Lamda表达式和编程一般来说是新手 在对Lambda表达式进行如下实验后:Java Lambda表达式中使用的接口和类是否可以放在单独的文件中?,java,file,class,lambda,interface,Java,File,Class,Lambda,Interface,这可能是一个有点傻的问题,但我对Lamda表达式和编程一般来说是新手 在对Lambda表达式进行如下实验后: interface Starter { public void start(); } class Machine { public void run( Starter s ) { System.out.println("Running code...."); s.start(); } } public static void main(String[] arg
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"));
}
这让我想知道,如果接口和类(在这种情况下是机器)可以移动到单独的文件中,这样仍然可以工作吗?我试着按照我认为可行的方式去做,但没有成功,这可能吗?如果是这样,你怎么做?如果我正确理解了你的问题,那么只需添加一个单独的类(比如
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"));
}
}
只要Machine类和Starter接口对主类可见,那么这是完全可能的
我的猜测是,您将Starter接口移动到了主类以外的另一个包中,并且由于您没有包含“public”修饰符,它对主类不再可见,并且将拒绝编译。yes。您可以做到。在一个源文件中包含多个顶级类是极为罕见的。虽然语言支持它,但它从未在实际工作中完成。我只在一些小的特别代码中见过它,例如在将代码发布到在线测试/挑战站点时。所以要回答您的问题:是的,您可以始终将顶级类放在单独的源文件中。