Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用接口。如何验证我的Java接口?_Java_Interface - Fatal编程技术网

使用接口。如何验证我的Java接口?

使用接口。如何验证我的Java接口?,java,interface,Java,Interface,我正试图像世界上数百万其他人一样理解Java接口。如何测试我是否真的在使用我的界面?如果我删除TestBubbles类中的“实现”,我仍然会得到相同的结果。我可以更改任何一个方法定义并导致编译失败,但是如何测试我传递的数据呢 public interface Bubbles { public void addAir(String bubbleType, float bubbleOne, float bubbleTwo ); } 如果接口指定了输入变量的任何约束,则由具体实现来检查它们。

我正试图像世界上数百万其他人一样理解Java接口。如何测试我是否真的在使用我的界面?如果我删除TestBubbles类中的“实现”,我仍然会得到相同的结果。我可以更改任何一个方法定义并导致编译失败,但是如何测试我传递的数据呢

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 { ....