将Java类型表示为varargs
使用Java特性可以做类似的事情吗将Java类型表示为varargs,java,variadic-functions,Java,Variadic Functions,使用Java特性可以做类似的事情吗 class myClass {int i; String s;} static void myMethod(myClass... args) { ... } main() { myMethod(2,"two",3,"three"); } 您可以使用包装器类执行此操作: class MyWrapper { private int i; private String s; public MyWrapper(int _i, St
class myClass {int i; String s;}
static void myMethod(myClass... args)
{
...
}
main()
{
myMethod(2,"two",3,"three");
}
您可以使用包装器类执行此操作:
class MyWrapper {
private int i;
private String s;
public MyWrapper(int _i, String _s) {
i = _i;
s = _s;
}
}
class Test {
static void myMethod(MyWrapper... args) {
//do work
}
public static void main(String[] args) {
myMethod(new MyWrapper(2, "two"), new MyWrapper(3, "three"));
}
}
这是不可能的。也许您可以创建一个静态帮助器方法,使创建对象尽可能容易
static myClass mc(int i, String s) {
return new myClass(i, s);
}
myMethod(mc(2, "two"), mc(3, "three"));
不,但您可以创建
MyClass
的构造函数并调用:
myMethod(new MyClass(2, "two"), new Myclass(3, "three"));
为简洁起见,您可以创建静态导入的factory方法:
public class MyClass {
public MyClass create(String s, int i) {
return new MyClass(s, i);
}
}
和使用:
myMethod(create(2, "two"), create(3, "three"));
是的,索托夫。您需要类的构造函数
public class MyClass{
int i
String s;
public MyClass(int i, String s){
this.i = i;
this.s = s;
}
}
public static void myMethod(MyClass... instances){
.....
}
public static void myMethod(Object... args){
MyClass[] instances = new MyClass[args.length / 2];
for (int i=0; i<args.length / 2; i++){
instances[i] = new MyClass((Integer)args[i * 2], (String)args[(i*2) + 1]);
}
myMethod(instances);
}
公共类MyClass{
int i
字符串s;
公共MyClass(整数i,字符串s){
这个。i=i;
这个.s=s;
}
}
公共静态void myMethod(MyClass…实例){
.....
}
公共静态void myMethod(对象…参数){
MyClass[]实例=新的MyClass[args.length/2];
对于(int i=0;i)您的方法声明是正确的,但您在main中的方法调用不是。您正在尝试使用某种类似伪JSON的表示法。@MisterSmith先生,我想这就是问题的症结所在。:-)有时我只是等待更好的答案,而这永远不会出现。情况解决了