如何在 Java 中定义具有三种类型的 vararg?

问题描述 投票:0回答:1

由于我需要一个 Java 方法来接收三个特定类的任意数量的对象,因此我决定使用 vararg

...
来实现它。但是,我有一个限制,这三个类是:

  • java.lang.String
  • java.lang.Class
  • com.company.MyWidget

在我的想象的语法中我的方法可能看起来像:

  public void myMethod(<String|Class|MyWidget>... elements)) {
    // do something
  }

我想我可以使用超类或接口,但是前两个类属于 JVM,我无法触及它们。

如何在 Java 中执行此操作?

java methods syntax parameter-passing variadic-functions
1个回答
0
投票

你可以有多黑客行为?以下方法有效,但“丑陋”,并且您失去了使用特定于类的方法的能力。

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/

也就是说,你想实现什么目标?这是最好的解决方案吗,还是您对这个问题的视野狭隘,这不是您最初的问题?

© www.soinside.com 2019 - 2024. All rights reserved.