我有类似的接口层次 -Java:如何在界面层次结构中返回声明的类型?
interface Type
{
Type copy();
};
interface SubType extends Type
{
};
interface SubSubType extends SubType
{
};
而具体的类
public class Concrete implements SubSubType
{
@Override public Concrete copy() { return new Concrete(); }
}
我希望能够在一个呼叫类型副本(),并得到一个类型回来,调用拷贝()在SubType上并返回一个SubType,这是可以实现的吗?可能与泛型?
在此先感谢。
这是合法吗?它如何知道你是否返回一个Type(在Type接口中声明)或SubType(如在SubType接口中声明的)?你是通过不寻常的返回类型重载。 (这是Java 7中的新东西,还是我真的落后于时代?) – user949300
@user:这是Java 5中的新功能。它被称为[返回类型协变](http://en.wikipedia.org/wiki/Covariant_return_type )。编译器会认为静态返回类型是你调用'copy()'的变量声明类型的返回类型。换句话说,如果你有一个'Type type = new SubConcrete();''你不能'SubType subType = type.copy()'没有强制转换。 –
@Mark Peters谢谢!尽管如此,我仍然觉得很困惑,但我可以看到它可能有用。国际海事组织,我的解决方案更清晰(更明确)。因人而异。 – user949300