Methods 非常高级的方法/构造函数(Java)-接受真正的多态参数-Sintax
有没有办法声明多态构造函数?请不要超载 我想指定一个参数,它是1类和1接口的Ntanceof,但我不想用这两个类实现接口来创建一个新类 我想声明一个构造函数,通常使用语法:Methods 非常高级的方法/构造函数(Java)-接受真正的多态参数-Sintax,methods,arguments,instanceof,polymorphism,implements,Methods,Arguments,Instanceof,Polymorphism,Implements,有没有办法声明多态构造函数?请不要超载 我想指定一个参数,它是1类和1接口的Ntanceof,但我不想用这两个类实现接口来创建一个新类 我想声明一个构造函数,通常使用语法: class Clas { public Clas(Object obj) { ... } } 但这些参数obj是Class1和Interface2的实例,我想象如下: class CubeRotationThread { public CubeRotationThread(Cube c implements IRo
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扩展了多维数据集实现IRotable,因为不是所有的多维数据集都有这些工作。我不想要其他的铸造立方体立方体的选择,相反的,制造所有的立方体旋转体。
也许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) {}
}
对不起,这是我的第一份文件
GENERIC METHOD
http://docs.oracle.com/javase/tutorial/java/generics/bounded.html
http://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html
http://docs.oracle.com/javase/tutorial/java/generics/boundedTypeParams.html
I FOUND IT ! :)
public <Q extends Class1 & Iterf2 & Interf3> Return Method(Q Object) { }
Q is the private mixture class you want with Extends & implements & implements...
here is with multiple objects:
public <Q extends Class1 & Iterf2 & Interf3, W extends Class2 & Inter1 & Inter2> Return Method(Q arg1, W arg2) { }
use commas to separate classes inside <>, and use & to inherit
use commas to inherit directli in a class declaration
Here is very complete:
class Generic extends String implements Implements1, Implements2 {}
class Generic <T extends Class1 & Interface1 & Interface2> extends Class2 <W extends
Class3 & Iterface 5> implements Interface3, Interface4 {
public <Q extends Class2 & Interface4, R extends Class4 & Interface6> Generic(T wtf, Q arg, R arg) { }
}