gpt4 book ai didi

java - 即使没有指定接口(interface),也可以针对接口(interface)编译 Java 类

转载 作者:搜寻专家 更新时间:2023-11-01 00:59:21 24 4
gpt4 key购买 nike

我正在教授编程入门类(class),我们使用的是 Java。我想帮助学生学习如何将书面类规范转化为工作程序。我将提供书面规范。它以方法签名的形式指定类的名称和行为。我希望学生们将其转化为有效的 Java 类(class)。

我可以为他们提供一个接口(interface)并让他们实现该接口(interface),但这违背了部分目的:阅读和解释书面功能规范文档。我希望他们从头开始编写类(class)。然后我想给他们的作业打分。

我检查他们工作的想法是:根据我自己的接口(interface)编译他们的 Java 类文件。如果编译成功,那么至少我会知道他们已经遵循了所有的方法约定,我可以开始测试功能了。如果它没有编译,我会收到一条错误消息,报告哪些方法没有正确实现。

即使源代码中最初没有指定任何接口(interface),我如何强制针对接口(interface)编译 Java 类文件?

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

FooInterface.java

public interface FooInterface
{
...
}

Foo.java

public class Foo
{
...
}

我想编译 Foo 就像它显式实现了 FooInterface 一样。但我不想为此手动编辑一堆源代码文件。我该怎么做?

编辑

为了解决有关使用书面规范与提供接口(interface)的值(value)的问题,假设的规范文档如下所示:

Write a class called Foo with the following methods:

oldest : ages (int[]) -> int
Given an array of ages, return the highest one.

anyAdults : ages (int[]) -> boolean
Given an array of ages, return whether any of them are 18 or older.

IMO,这具有很大的教育意义。学生必须批判性地评估他们的程序是否符合规范。如果我提供了接口(interface)文件,他们就可以打开他们的大脑,让编译器告诉他们他们是否遵循规范。将编译器用作认知拐杖与较差的学生目前(未成功)用来平衡大括号和括号的技术相同。

最佳答案

你也许可以这样做:

public class Bar extends Foo implements FooInterface{}

如果 FooInterface 完全满足 Foo 则 Bar 不会有任何错误。

关于java - 即使没有指定接口(interface),也可以针对接口(interface)编译 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1691125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com