使用接口。如何验证我的Java接口?
我正试图像世界上数百万其他人一样理解Java接口。如何测试我是否真的在使用我的界面?如果我删除TestBubbles类中的“实现”,我仍然会得到相同的结果。我可以更改任何一个方法定义并导致编译失败,但是如何测试我传递的数据呢使用接口。如何验证我的Java接口?,java,interface,Java,Interface,我正试图像世界上数百万其他人一样理解Java接口。如何测试我是否真的在使用我的界面?如果我删除TestBubbles类中的“实现”,我仍然会得到相同的结果。我可以更改任何一个方法定义并导致编译失败,但是如何测试我传递的数据呢 public interface Bubbles { public void addAir(String bubbleType, float bubbleOne, float bubbleTwo ); } 如果接口指定了输入变量的任何约束,则由具体实现来检查它们。
public interface Bubbles {
public void addAir(String bubbleType, float bubbleOne, float bubbleTwo );
}
如果接口指定了输入变量的任何约束,则由具体实现来检查它们。没有神奇的解决办法
也就是说,您可以将方法标记为
@Override
,如果它不重写另一个方法,则会导致编译器错误,这在这种情况下非常有用。我总是这样做。通常,应该使用接口类型的变量引用对象
e、 g
不如下所示(否则创建接口就没有意义了)
您可以对其进行测试,并通过使用接口类型而不是类类型定义变量来编写代码。
看看你的台词:
TestBubbles tb = new TestBubbles();
tb.addAir(type, sizeOne, sizeTwo);
对接口进行编程时,应按照以下方式进行编码:
Bubbles tb = new TestBubbles();
tb.addAir(type, sizeOne, sizeTwo);
通过这种方式,您以后可以将TestBubbles与SuperToroPerTestBubbles交换,SuperToroPerTestBubbles只需更改一行代码即可实现相同的接口,其余代码即可:
Bubbles tb = new SuperTrooperTestBubbles();
tb.addAir(type, sizeOne, sizeTwo);
在哪里
public class SuperTrooperTestBubbles implements Bubbles { ....
如果您使用的是Eclipse,那么如果方法签名不匹配,就会出现一个错误,说明您没有实现
addAir()
,不确定这是否有帮助!如果(tb instanceof Bubbles),您可以验证您使用的接口是否为,但我不确定这是您要问的问题。接口实际上并不保证存在具有给定类型签名的方法以外的任何东西。“验证接口”可以非常简单,因为您可以编译代码并将其分配给具有接口类型的变量。@HoundDog:我使用的是vim和tmux。在我掌握基本知识之前,没有IDE。@Charlie:所以我想这和我做的一样,对吧?你应该做的另一件事是向任何实现接口方法的方法添加@Override注释(无论如何,从java 6开始,在java 5中,它只适用于重写的方法)。这将通知编译器,所讨论的方法必须重写超类方法或实现接口方法(不确定为什么它们不是单独的注释),否则将生成错误。@Steven已经建议过了,所以我将其忽略。它应该为实现创建一个单独的注释,毕竟我们在实现时没有覆盖任何内容。感谢Java版本,我不确定版本6。
Bubbles tb = new TestBubbles();
tb.addAir(type, sizeOne, sizeTwo);
Bubbles tb = new SuperTrooperTestBubbles();
tb.addAir(type, sizeOne, sizeTwo);
public class SuperTrooperTestBubbles implements Bubbles { ....