Tag: 接口

Java文档:从接口Xinheritance的方法的含义是什么

我必须在这里遗漏一些基本的Java术语: 类可以扩展,因此它们的方法可以由它们的子类inheritance 。 接口可以实现 。 实现类必须实现所有接口的方法 – 接口本身不实现任何东西,只声明。 那么,当我查看HashSet的文档( https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html )时,我看到了一个inheritance自的方法列表接口 java.util.Set?

匿名类如何有参数?

我不是一个java人,但我inheritance了一些我需要补丁的代码。 我将源代码转换为netbeans,我收到错误:匿名类实现接口; 不能有参数。 这是代码: Executor background = Executors.newSingleThreadExecutor(); Runnable mylookupThread = new Runnable(FilePath, SearchIndex) { public void run() { MainWindow.this.processFile(this.val$FilePath); Thread t = new Thread(new lookupThread(MainWindow.arrFile, true, false, this.val$SearchIndex)); t.setName(“Lookup”); t.setPriority(10); t.start(); } }; background.execute(mylookupThread); Executor statusThread = Executors.newSingleThreadExecutor(); Runnable myStatusThread = new Runnable() { public void run() { MainWindow.this.updateStatus(); } }; statusThread.execute(myStatusThread); 错误会在第二行弹出。 救命?!?

Java – 合同测试

我正在尝试为一些广泛使用的接口编写合同测试: 沿着: public abstract class MyInterfaceContractTest extends TestCase { private MyInterface _toTest; public void setUp(){ _toTest = getTestableImplementation(); } protected abstract MyInterface getTestableImplementation(); public void testContract(){ } } …和… public class MyInterfaceImplementationTest extends MyInterfaceContractTest { protected MyInterface getTestableImplementation(){ return new MyInterfaceImplementation(…); } } 但是,我希望能够测试MyInterfaceImplementation多个实例。 在我的用例中,这是一个包含数据集合的不可变对象(根据接口MyInterface指定访问MyInterface ),它可能是空的,或者有少量数据,甚至是大量数据。 所以问题是,我如何测试我的实现的多个实例? 目前,我必须初始化实现以将其传递给抽象合同测试。 一种方法是为每个实现提供多个测试类,其中每个测试类测试该实现的特定实例 – 但这似乎有点庞大且难以跟踪。 FWIW,我正在使用JUnit 3。

inheritance和多态之间的区别

我正在研究多态性。 我无法确定Java中有关这两个function的类比。 让我们说Animal类是一个具体的超类, Cat和Dog作为它的子类。 我知道这是inheritance的一个例子。 但是不是Cat and Dog类, Animal类的多态? 我很清楚Java中的接口。 我无法理解为什么使用接口而不是具体类来解释多态。 可能是创建接口的整个目的是创建多态,但我想知道为什么接口而不是具体的类?

Java接口……动态或静态内存?

java接口在哪里驻留在内存中? 它们是驻留在堆还是堆栈中,还是全局内存? 我认为它们是在堆栈中,因为它们是在编译时创建的。 我对么?

实现不兼容的接口

我正在尝试构建一个实现Queue和Map 。 两个接口都定义了remove(Object)方法,但具有不同的返回类型: public interface Collection { //Queue extends Collection, which has the problem method public boolean remove(Object e); //… } public interface Map { public V remove(K key); //… } public class QueuedMap extends AbstractMap implements Queue { public V remove(K key) {/* … */} //ERROR: V is not compatible with boolean //… } […]

有没有办法确保实现接口的类实现静态方法?

首先,我阅读了erickson对“为什么我不能在Java接口中定义静态方法?”的有用回复。 。 这个问题不是关于“为什么”而是关于“如何呢?”。 编辑:我原来的例子不合适,但我会把它留在下面。 虽然我现在确信在大多数情况下我想做的事情是矫枉过正,但有一种情况可能需要它: 我将再次参加ParametricFunction示例。 现在让我们看一个复杂的函数,比如Bessel函数 ,其中查找表是合适的。 这必须初始化,因此两个选项是将参数直接传递给构造函数或提供init(double[] parameters) 。 后者的缺点是getValue(double x)必须检查每次调用的初始化(或者ArrayIndexOutOfBoundsException必须被视为初始化检查),因此对于时间要求严格的应用程序,我更喜欢构造函数方法: interface ParametricFunction { public double getValue(double x); } class BesselFunction implements ParametricFunction { public BesselFunction(double[] parameters) { … } public double getValue(double x) { … } } 这涉及另一个问题,接口中构造函数的不可能性。 那里有什么好的解决方案? 我当然可以使用init(double[] parameters)方法,但我之所以提到我的原因。 (编辑:好的,这里实现接口的抽象类会这样做) 现在让我们假设ParametricFunction只允许某些参数,例如正整数。 如何检查传递给构造函数的参数的真实性? 抛出IllegalArgument checkParametersValidity(double[] parameters)是可能的,但checkParametersValidity(double[] parameters)似乎更方便。 但是在构造之前需要检查参数,因此它必须是静态方法。 这就是我真正想知道的方法,以确保实现ParametricFunction接口的每个类都确实定义了这个静态方法。 我知道这个例子是相当人为的,不仅仅是通过接口使用init方法的原因值得商榷,我仍然想知道答案。 如果您不喜欢它,请将其视为学术问题。 […]

为什么Java接口可以在这些代码中实例化?

可能重复: 创建接口的“对象” 我是Java新手。 根据我的理解: 我们无法实例化Interface 。 我们只能实例化一个实现interface的class 。 new关键字用于从类创建对象。 但是,当我读取某些Java程序的源代码时,我发现有时会实例化一个接口。 例如: 例1: JButtonObject.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //codes } }); 例2: SwingUtilities.invokeLater(new Runnable() { public void run() { //codes } }); 在上面的示例中,ActionListener和Runnable都是Java接口。 我可以知道为什么可以在这些代码中实例化它们吗? 实例化接口的目的是什么? 参考这个例子 ,似乎我们应该创建一个实现接口的类的实例。

接口与c ++中的java一样?

可能重复: 你如何在C ++中声明一个接口? 有人问我一个问题:“在C ++中没有像java这样的接口。但是事件那么你可以在c ++中实现它们,你会怎么做?” 怎么样? 我会用虚方法创建一个类。 这看起来像java中的界面或? 谢谢

匿名内部类中的接口如何工作?

interface MyInter { public void display(); } class OuterClass8 { public static void main(String arg[]) { MyInter mi=new MyInter() { public void display() { System.out.println(“this is anonymous class1”); } }; mi.display(); } } 据我所知,我们无法实例化一个接口,那么这是怎么发生的呢?