有没有办法声明多态构造函数?(请不要超载!)。
我想指定一个参数,即不是 1 个类和 1 个接口,但我不想用这两者创建一个新类(类实现接口)。
我想声明一个构造函数,通常使用以下语法:
class Clas {
public Clas(Object obj) { ... }
}
但是这些参数“obj”是 Class1 和 Interface2 的实例,我想像这样:
class CubeRotationThread {
public CubeRotationThread(Cube c implements IRotable) {...}
//...or...
public CubeRotationThread(Cube c instanceof IRotable) {...}
}
...或仅为此参数指定多态的任何其他语法。我不想创建类:CubeRot 扩展了 Cube 实现了 IRotable,因为并非所有的立方体都有这些工作。而且我不想要铸造(Cube)CubeRot的其他选项,相反,使所有立方体可旋转。也许 IRotator 可以在多维数据集或其他类中实现或不实现。
我不想在构造函数中使用检查:
if (obj instanceof Class) { myMethod(); }
我不想创建一个新课程
class CubeRotatorThread extends Cube implements IRotator {
}
...因为并非所有立方体都可以旋转,而且不仅立方体实现旋转。
我不想使用泛型类:
class CubeRotatorThread T extends Cube implements IRotator {
}
...因为 T 是一个类,我想要一个对象/参数。
而且我也不想创建一个NotImplementsRotationException
!扔。
我想要一个多态参数,我想要一个真正的多态方法
可能吗?我搜索了它,但我没有在构造函数中找到执行此操作的语法。
我在其他语言(可能是 C# 或 C++)、帮助文档或定义文档中看到了另一种代码,例如:
Constructor(Class1 (Class2) args);
这对我来说很奇怪。我不确定这是不是我想要的。
如果多态构造函数不存在,我认为 Oracle 必须创建它。这是非常有用的。
class CubeRotationThread {
public CubeRotationThread(Cube arg implements IRotator) {}
public CubeRotationThread(Cube arg extends IRotator) {}
public CubeRotationThread(Cube arg instanceof IRotator) {}
}