Java 一个接口只能实现一个参数化&x2014;如何工作?

Java 一个接口只能实现一个参数化&x2014;如何工作?,java,parameters,interface,limit,Java,Parameters,Interface,Limit,下面是一个我希望能够(用Java)完成的示例: 在这里,MyClass声明它观察数据库对象和电子表格对象,在理想情况下,编译器会要求必须实现两个不同的observedDidChange()方法 谢谢。由于,接口的通用位的参数在编译和运行时消失。因此,就Java而言,MyInterface和MyInterface是相同的,在编译时就变成了MyInterface。我想当他们实现泛型时,可能会处理您想要的情况(方法参数的不同类型),但是Java如何处理泛型参数用于返回类型的方法: interface

下面是一个我希望能够(用Java)完成的示例:

在这里,MyClass声明它观察数据库对象和电子表格对象,在理想情况下,编译器会要求必须实现两个不同的observedDidChange()方法

谢谢。

由于,接口的通用位的参数在编译和运行时消失。因此,就Java而言,
MyInterface
MyInterface
是相同的,在编译时就变成了
MyInterface
。我想当他们实现泛型时,可能会处理您想要的情况(方法参数的不同类型),但是Java如何处理泛型参数用于返回类型的方法:

interface Foo<T> {
    T getSomeObject();
}
接口Foo{
T getSomeObject();
}
这里的问题是,您不能重载一个方法,它唯一的区别是返回类型,因此这将严重限制执行类似于
实现MyInterface

的操作的有用性,因为在编译和运行时,接口的通用位的参数将消失。因此,就Java而言,
MyInterface
MyInterface
是相同的,在编译时就变成了
MyInterface
。我想当他们实现泛型时,可能会处理您想要的情况(方法参数的不同类型),但是Java如何处理泛型参数用于返回类型的方法:

interface Foo<T> {
    T getSomeObject();
}
接口Foo{
T getSomeObject();
}

问题是你不能重载一个方法,它唯一的区别就是返回类型,因此这将严重限制像
实现MyInterface这样的操作的有用性

也许你在寻找一个(又称“双重分派”)。

也许你在寻找一个(又称“双重分派”).

在您的问题中,您删除了所有与您试图解决的问题相关的内容,只发布了一个难以回答的问题。。如果您可以发布问题(即:我想实现两种类型的CustomerHandler),我们都可以尝试解决您的问题(正如duffymo提出的设计模式),而不是回答您的问题。。这样你会得到更好的答案,我更喜欢前者而不是后者在你的问题中,你删除了所有与你试图解决的问题相关的内容,只发布了一个难以回答的问题。。如果您可以发布问题(即:我想实现两种类型的CustomerHandler),我们都可以尝试解决您的问题(正如duffymo提出的设计模式),而不是回答您的问题。。这样你会得到更好的答案,我更喜欢前者而不是后者我刚才也有同样的问题。我的结论是Java的泛型很糟糕!Sun应该咬紧牙关,给我们真正的泛型。他们声称问题在于与软件/库预泛型的兼容性。事实是,您可以在现代JVM上运行古老的软件,而不需要修改,这给人留下了深刻的印象。我们内部有一个复杂的GUI软件,它是为1.2版本之前的Windows JVM(yikes!)编写的,该JVM在Mac上的64位1.6 JVM下运行良好(未经修改)。@Journeyman程序员:出于好奇,什么OO语言允许类似
类MyClass实现MyInterface的东西,MyInterface…<代码>?史蒂芬C:AddiMun: C++使用模板,我刚才也遇到过同样的问题。我的结论是Java的泛型很糟糕!Sun应该咬紧牙关,给我们真正的泛型。他们声称问题在于与软件/库预泛型的兼容性。事实是,您可以在现代JVM上运行古老的软件,而不需要修改,这给人留下了深刻的印象。我们内部有一个复杂的GUI软件,它是为1.2版本之前的Windows JVM(yikes!)编写的,该JVM在Mac上的64位1.6 JVM下运行良好(未经修改)。@Journeyman程序员:出于好奇,什么OO语言允许类似
类MyClass实现MyInterface的东西,MyInterface…<代码>?@史蒂芬C:AddiMun: C++使用模板,即。
interface Foo<T> {
    T getSomeObject();
}