-2

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

public interface Bubbles {
   public void addAir(String bubbleType, float bubbleOne, float bubbleTwo );
}

public class TestBubbles implements Bubbles {

    public static void main(String [] args){
      String type = "wiggly";
      float sizeOne = 42.01f;
      float sizeTwo = 80.10f;

      TestBubbles tb = new TestBubbles();
      tb.addAir(type, sizeOne, sizeTwo);

}


   public void addAir(String rType, float fOne, float fTwo ){
       System.out.println(rType + " " + fOne + " " + fTwo);

   }

}
4

3 回答 3

1

通常,您应该使用接口类型的变量来引用对象。

例如

Bubbles tb = new TestBubbles(); //now it will not compile if you remove implements

不如下(否则创建界面没有意义)

TestBubbles tb = new TestBubbles();
于 2012-11-28T03:13:07.780 回答
1

您对此进行测试,并且应该通过使用接口类型而不是类的类型定义变量来对其进行编码。
看看你的线:

TestBubbles tb = new TestBubbles();
tb.addAir(type, sizeOne, sizeTwo);

对接口进行编程时,应按如下方式编码:

Bubbles tb = new TestBubbles();
tb.addAir(type, sizeOne, sizeTwo);

这样,您以后可以将 TestBubbles 与 SuperTrooperTestBubbles 交换,后者只需更改一行代码即可实现相同的接口,其余的将起作用:

Bubbles tb = new SuperTrooperTestBubbles();
tb.addAir(type, sizeOne, sizeTwo);

在哪里

public class SuperTrooperTestBubbles implements Bubbles { .... 
于 2012-11-28T03:25:18.507 回答
0

如果接口指定了对输入变量的任何约束,则由具体实现来检查它们。没有神奇的解决方案。

也就是说,如果它@Override覆盖另一个方法,您可以将方法标记为编译器错误,这对这种情况很有用。我总是这样做。

于 2012-11-28T02:52:18.977 回答