Tag: 接口

避免实现接口中的方法 – java

我有一个如下界面: public interface a { public void m1(); public void m2(); public void m3(); } public class A implements a { public void m3() { // implementation code } } 我想避免实现该方法的其余部分。 一种方法是在尝试实现interface的类中没有实现所有方法。 我该如何避免这种情况。 示例代码可以帮助我更好地理解:)

如何在Java中编写自己的标记接口?

我知道java中的标记界面。 它用于定义关于类的特定行为。 例如,Serializable接口具有将对象存储到字节流及其反向过程的特定function。 但我不知道这个特定行为的实现位置,因为它没有任何方法。 JVM如何调用此特定行为? 如何编写我们自己的标记界面? 你能给我一个简单的用户定义标记界面供我理解吗? 是否可以在标记界面中使用方法? 请指导我解决此问题。

我可以在Eclipse的类型层次结构视图中看到接口吗?

当我检查从Eclipse中的接口派生的类的类型层次结构时,它不显示接口。 有没有办法配置Eclipse以显示类型层次结构中的接口? 或者有没有其他方式来查看此信息?

如何创建一个我无法更改的类,实现一个接口?

我有一个来自另一个闭源的库的类,但我希望能够使用它的接口。 原因是我不想在任何地方进行instanceof检查或null -checks,但我也不想扩展现有的类。 例如,假设我有这个代码: public class Example { // QuietFoo is from another library that I can’t change private static QuietFoo quietFoo; // LoudFoo is my own code and is meant to replace QuietFoo private static LoudFoo loudFoo; public static void main(String[] args) { handle(foo); } private static void handle(Object foo) { if (foo instanceof […]

在整个申请过程中,您在哪里使用Constants?

界面是一个可以接受的地方来存储我的 public static final Foo bar 你是否推断它们是从程序外读取的? 你为它组成一个超级class吗? 当情况出现时,你是如何做到的?

如何在Java中实现抽象静态方法?

关于包含静态抽象Java方法的不可能性存在许多问题。 关于此的解决方法(设计缺陷/设计强度)也有很多。 但我找不到任何关于我即将陈述的具体问题。 在我看来,制作Java的人和很多使用它的人并没有像我和其他许多人那样思考静态方法 – 作为类函数或属于类的方法而不是任何对象。 那么还有其他一些实现类函数的方法吗? 这是我的例子:在数学中,一个组是一组对象,可以使用某些操作*以某种合理的方式相互组合 – 例如,正实数在正常乘法下形成一组( x * y = x × y ),并且整数集形成一个组,其中’乘法’运算是加法( m * n = m + n )。 在Java中对此进行建模的一种自然方法是为组定义接口(或抽象类): public interface GroupElement { /** /* Composes with a new group element. /* @param elementToComposeWith – the new group element to compose with. /* @return The composition of […]

方法返回类型以实现多个接口

是否可以指定一个返回实现两个或多个接口的对象的方法? 假设我们有以下接口: interface FooBar { [Foo] & [Bar] getFooBar(); } interface Foo { void doFoo(); } inteface Bar { void doBar(); } FooBar实现者需要提供getFooBar()方法,该方法返回一个满足Foo和Bar的类型的实例。 我到目前为止尝试的是使用generics: interface FooBar { T getFooBar() } class SomeImplementor implements FooBar { private FooAndBarImpl fSomeField; public T getFooBar() { return fSomeField; } } 鉴于FooAndBarImpl是由框架或库提供的某种类型并实现Foo和Bar我认为应该可行。 但是,它没有,因为“FooAndBarImpl无法转换为T”。 这是为什么? getFooBar()隐含的合同没有像我看到的那样被打破。 另一个解决方案是定义一个扩展Foo和Bar的新接口,并将其用作返回类型。 我在getFooBar()实现中返回fSomeField的空包装时没有多大意义。 编辑: 如果有人能解释为什么generics方法不起作用,我将不胜感激。 我只是没有看到它。

有没有办法保证接口扩展Java中的类?

假设我有以下情况: public abstract class Vehicle { public void turnOn() { … } } public interface Flier { public void fly(); } 有没有办法可以保证任何实现Flier类都必须扩展Vehicle ? 我不想让Flier成为一个抽象类,因为我希望能够以类似的方式混合其他一些接口。 例如: // I also want to guarantee any class that implements Car must also implement Vehicle public interface Car { public void honk(); } // I want the compiler to either […]

界面内部的枚举实现 – Java

我有一个关于在界面中放置Java枚举的问题。 为了更清楚,请参阅以下代码: public interface Thing{ public enum Number{ one(1), two(2), three(3); private int value; private Number(int value) { this.value = value; } public int getValue(){ return value; } } public Number getNumber(); public void method2(); … } 我知道接口由具有空体的方法组成。 但是,我在这里使用的枚举需要一个构造函数和一个方法来获取一个关联的值。 在此示例中,建议的接口不仅包含具有空体的方法。 是否允许此实施? 我不确定是否应该将enum类放在接口或实现此接口的类中。 如果我将枚举放在实现此接口的类中,那么public Number getNumber()方法需要返回枚举类型,这将迫使我在接口中导入枚举。

如何最好地测试Java代码?

我自己一直在研究一个比较大的系统,这是我第一次使用大型系统(同时处理200多个信息通道)。 我知道如何使用Junit测试每个方法,以及如何测试边界条件。 但是,对于系统测试,我需要测试所有的接口,也可能是一些压力测试(可能还有其他事情要做,但我不知道它们是什么)。 我是测试世界的新手,请给我一些建议或指出一些关于优秀代码测试人员如何进行系统测试的信息。 PS:我有两个具体问题:如何测试私人function? 如何测试界面并避免副作用?