由于我需要一个 Java 方法来接收三个特定类的任意数量的对象,因此我决定使用 vararg
...
来实现它。但是,我有一个限制,这三个类是:
在我的想象的语法中我的方法可能看起来像:
public void myMethod(<String|Class|MyWidget>... elements)) {
// do something
}
我想我可以使用超类或接口,但是前两个类属于 JVM,我无法触及它们。
如何在 Java 中执行此操作?
你可以有多黑客行为?以下方法有效,但“丑陋”,并且您失去了使用特定于类的方法的能力。
public void myMethod(String... elements) {
myMethod((Object[]) elements);
}
public void myMethod(Class<?>... elements) {
myMethod((Object[]) elements);
}
public void myMethod(MyWidget... elements) {
myMethod((Object[]) elements);
}
private void myMethod(Object... elements) {
// do it here
}
另一方面,您确定没有遇到 XY 问题吗? https://xyproblem.info/
也就是说,你想实现什么目标?这是最好的解决方案吗,还是您对这个问题的视野狭隘,这不是您最初的问题?