【发布时间】:2014-04-06 13:57:03
【问题描述】:
是否可以对类中的几个方法强制签名?
假设我有InterfaceMyInterface:
public interface MyInterface
{
public void method(int a);
}
我想在MyInterfaceClass 类中实现MyInterface,使MyInterfaceClass 中的每个方法都具有相同的签名?
public class MyInterfaceClass implements MyInterface
{
public void method_A(int a) { /*something */ }
public void method_B(int a) { /*something */ }
public void method_C(int a, int b) { /*something */ } // ERROR cause of signature, won't compile
}
我在MyInterfaceClass 中有未知数量的方法。
【问题讨论】:
-
所以你想要一个类,其中每个方法都具有与它实现的接口中的单个方法相同的签名?对我来说,这听起来像是一项需要反思的工作......
-
如果唯一的区别是参数的长度,您可以考虑使用可变参数。
-
要“强制”您以这种方式声明的方法的签名。在上面的代码示例中,MyInterfaceClass 无法编译的唯一原因是您没有定义
method(int a)。与method_C无关。 -
这对我来说似乎是一个 XY 问题。你有一个问题 (X),你认为你可以通过某种方式解决它,但这会导致一个新问题 (Y)。如果你不说出你真正想要什么,任何人都无法在这里帮助你。
-
@hudac 这就像问你是否可以用螺丝刀切割一块木头。如果这是你的目标(为了好玩、出于好奇或其他),答案确实是:不。但是,如果您的目标是切割木材,答案是:使用不同的工具。所以如果你坚持你的要求,答案是:你不能强制执行这样的课程。如果您有实际用例,则很可能有解决方案。
标签: java inheritance interface abstract-class