即使没有指定任何接口,也要针对接口编译Java类

Bar*_*own 4 java oop interface

我正在教编程课程的介绍,我们正在使用Java.我想帮助学生学习如何将书面课程规范翻译成工作程序.我会提供书面说明.它以方法签名的形式指定类的名称和行为.我希望学生将其转换为可用的Java类.

我可以为它们提供一个接口并让它们实现接口,但这会破坏部分目的:读取和解释书面功能规范文档.我希望他们从头开始编写课程.然后我想评估他们的工作.

我检查他们工作的想法是这样的:根据我自己的界面编译他们的Java类文件.如果它编译,那么至少我会知道他们已经遵循了所有方法合同,我可以开始测试功能.如果它没有编译,我将收到一条错误消息,报告哪些方法没有正确实现.

即使源代码中最初未指定Java类文件,如何强制对接口编译Java类文件?

换句话说,假设我有以下两个文件:

FooInterface.java

public interface FooInterface
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

Foo.java

public class Foo
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想编译Foo,就像它明确地实现了FooInterface一样.但我不想手动编辑一堆源代码文件才能这样做.我该怎么做?

编辑

要解决有关使用书面规范与提供界面的价值的问题,这是一个假设的规范文档:

使用以下方法编写一个名为Foo的类:

最旧的:年龄(int []) - > int
给定一个年龄数组,返回最高的一个.

anyAdults:ages(int []) - > boolean
给定一个年龄数组,返回它们中的任何一个是18还是更旧.

国际海事组织,这具有很大的教育效益.学生必须批判性地评估他们的课程是否符合规范.如果我提供了接口文件,他们可以拔掉他们的大脑并让编译器告诉他们他们是否遵循规范.使用编译器作为认知拐杖是与较差的学生目前(不成功)用来平衡他们的牙套和括号的技术.

jon*_*nii 11

你可以这样做:

public class Bar extends Foo implements FooInterface{}
Run Code Online (Sandbox Code Playgroud)

如果Foo完全满足FooInterface,那么Bar将不会有任何错误.

  • @Oscar.这里OP将提供Bar和FooInterface; 学生写的Foo课不知道FooInterface (4认同)

Mur*_* VP 11

你仍然可以让Foo实现FooInterface,但只是给你的学生一个空的FooInterface.编译学生时,Foo使用实际的FooInterface.