我有一个Java接口A定义了一个方法,该方法将另一个接口B作为参数。 我想知道是否有可能在实现的类中重载该方法,以提供一个实现接口B的对象作为参数。这是我的意思的示例代码:

public interface SampleInterfaceA{
    public void sampleMethod(SampleInterfaceB b);
}

public class ClassB implements SampleInterfaceB{}
public class ClassC implements SampleInterfaceB{}

public class SampleClassA implements SampleInterfaceA{
    @Override
    public void sampleMethod(ClassB b){}
}

public class SampleClassB implements SampleInterfaceA{
    @Override
    public void sampleMethod(ClassC c){}
}

在此先感谢您的帮助。

===============>>#1 票数:1 已采纳

如果尝试一下,您会发现SampleClassASampleClassB被编译器视为缺少实现SampleInterfaceA所需的内容。

您需要实现接口中定义的实际方法。

一种大致获得您想要的方法是使用泛型:

public interface SampleInterfaceA <T extends SampleInterfaceB>{
    public void sampleMethod(T b);
}

public class SampleClassA implements SampleInterfaceA<ClassB>{
    public void sampleMethod(ClassB b){}
}

public class SampleClassB implements SampleInterfaceA<ClassC>{
    public void sampleMethod(ClassC c){}
}

  ask by AlexC translate from so

未解决问题?本站智能推荐:

2回复

方法的通用接口重载?

有没有一种好的,通用的方法可以执行以下操作,而无需求助于第二种方法或进行大量强制转换-我想使API尽可能轻便,在我看来,OO明智: 谢谢
3回复

使用接口和显式实现的函数重载

我有以下界面: 实现如下所示。 注意:要求Sample1的实现是显式的(由于通用约束voodoo) 但是,尝试调用重载会导致此错误: 错误5'myCLass'不包含'Sample1'的定义,并且找不到扩展方法'Sample1'接受类型为'myCLass'的第一个参数(您是
3回复

Java接口中的重载方法

如下所示在Java接口中重载方法是否正确。 然后使用子类中所需的方法? 如果没有,请提出一种更好的方法。
1回复

通用方法:如何使用最专业的方法进行强制

我在接口IInterface定义了通用方法Use<T> 。 我尝试实现该接口的实现,其中Use<T>方法的具体实现取决于实际的类型T ,并且我想始终调用最专门的方法。 但这不起作用: 这是我的主要方法: 可以调用带有IChildInterface参数的
2回复

如何在不装箱的情况下检查通用参数是否不为null

我想编写一个接受单个IBar并调用其Baz方法的方法。 当obj为null时抛出: 当它是值类型时,将obj装箱: 如果obj为零,则不会调用Baz : 在这里,无论Bar是类还是结构, Foo(new Bar())始终选择通用方法: 这使我的眼睛流血:
1回复

Java中使用泛型的方法重载和参数

我有以下两种方法: 你有一个优雅的解决方案(除了使用类型转换和对象),将避免上面的重复代码,并将使用单个方法名称?
4回复

使用接口调用的Java方法重载

我确信这是基本的,但我很难过。 这个例子非常过于简化,但归结为以下几点。 我在类中有一些重载方法,如下所示: 然后,我有另一种方法,执行以下操作: 当我尝试编译时,我收到以下错误: 找不到标志 这是因为JVM无法在编译时确定接口的实现,因此它知道要调用哪个重
5回复

Java接口:继承,重写和重载方法

在“The Java™Programming Language,Fourth Edition”中,Ken Arnold,James Gosling,David Holmes提到: 段落:(4.3.2) “同样,如果一个接口继承了多个具有相同签名的方法,或者一个类实现了包含具有相同签名的方法
1回复

参数中带有通配符的歧义重载泛型方法

鉴于以下声明 为什么我得到以下代码的编译错误: 顺便说一句,可以通过将第二种方法的声明更改为
3回复

具有继承接口的Java重载方法

我试图了解java的行为。 使用此接口: 我正在重载这样的方法: 使用以下对象调用方法时: 为什么java使用: 代替 ? 谢谢