자바 기능을 사용하여 이렇게 할 수 있습니까?자바 타입을 varargs로 표현하기
class myClass {int i; String s;}
static void myMethod(myClass... args)
{
...
}
main()
{
myMethod(2,"two",3,"three");
}
자바 기능을 사용하여 이렇게 할 수 있습니까?자바 타입을 varargs로 표현하기
class myClass {int i; String s;}
static void myMethod(myClass... args)
{
...
}
main()
{
myMethod(2,"two",3,"three");
}
. 아마도 당신은 당신의 객체를 가능한 한 쉽게 생성하는 정적 헬퍼 메소드를 생성 할 수 있습니다.
static myClass mc(int i, String s) {
return new myClass(i, s);
}
myMethod(mc(2, "two"), mc(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"));
}
}
아니,하지만 당신은 MyClass
의 생성자를 만들고 호출 할 수 있습니다
myMethod(new MyClass(2, "two"), new Myclass(3, "three"));
당신이 정적으로 수입 팩토리 메소드 할 수 간결성을 위해 :
public class MyClass {
public MyClass create(String s, int i) {
return new MyClass(s, i);
}
}
및 사용 :
myMethod(create(2, "two"), create(3, "three"));
예, sortof입니다. 당신은
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);
}
당신은 오류가 인수 요소의 짝수 번호가되었는지 확인하려면 추가해야합니다 모든 내가 2 요소를 * 것을 강제 할 수있는 방법이없는 ... 클래스의 생성자를 필요 정수이고 모든 문자는 입니다. i * 2 + 1은 문자열입니다. 하지만 가능합니다.
위의 내용을 모두 감안할 때 ... 이것은 매우 비표준적인 프로그래밍이므로 권장하지 않습니다. 그러나 보시다시피, 가능합니다.
아니요, 불가능합니다 –
메소드 선언은 괜찮지 만 main에서 메소드 호출이 올바르지 않습니다. 당신은 의사 JSON 같은 표기법의 일종을 사용하려고합니다. –
@MisterSmith 필자는 JSON과 비슷한 의사 표기법이 그 질문과 관련이 있다고 생각한다. :-) – henko