저는 U.I.을 구현하려고합니다. 여기서 사용자는 콘솔에 값을 입력하고 내 프로그램은 단지 일부 값을 실행 및 수정하거나 실행하고 반환 할 함수를 호출해야합니다. 두 경우 모두이 함수는 매개 변수를 취할 수도 있고 그렇지 않을 수도 있습니다.Java 가변 메서드 및 일반 반환 형식을 사용하여 인터페이스를 구현하는 방법
이 시점에서 이것은 기본적으로 getters와 setter처럼 들리지만, 완전히 구현하고 싶지는 않습니다. 그리고 이것은 10+ if 문을 통과하지 않아도되는 것을 방지하기위한 것입니다. 주어진 사용자 입력.
그래서 내 솔루션은, 내가이 인터페이스를 사용하여 인스턴스 생성 내 수업 내부와 내가 실행하려는 각 활동에 대한이 같은 인터페이스의 종류를 만드는 것입니다 :
private interface DoActivity <R> {
public R execute(Object... param);
}
이 때 작동을 I execute 메소드에 전달할 매개 변수의 유형을 지정하려면,하지만 난 그것과 같은 DoActivity의 인스턴스를 만들 때 실행 방법입니다하지 않습니다
private class setPerson implements DoActivity {
@Override
public Void execute(String name, String telephone) {
...
return null;
}
}
나는 위의에 오류가 : method does not implement or override a method from supertype
를 리플렉션에 의존하지 않고 원하는 것을 할 수있는 방법이 있습니까?
샘플 사용 :
// at prompt
>> Enter an operation: 1 Bumble Bee
>> ...
// In program
String input = "1 Bumble Bee";
String split[] = input.split();
int operation = Integer.parseInt(split[0]);
DoActivityArray[operation - 1].execute(split[1], split[2]);
귀하의 실행 방법은 사용자의 인터페이스와 같은 유형이 없습니다. 사용자는'setPerson' 객체를 가지고 있지 않거나 갖지 않아야합니다. 오히려'setPerson' 객체로 인스턴스화 된'DoActivity' 객체를 가져야합니다. 메소드 프로토 타입에서 정확히 두 개가 아닌 원하는 수의 객체를 넣을 수 있어야합니다. – Jared
이것이 인터페이스를 적절하게 사용하는 것이 아닙니다. 이 메소드를 실행하려면, 그것이 DoActivity 객체가 아니라'setPerson' 객체라는 것을 알아야합니다. 이것은'setPerson'이'DoActivity'와는 다르다는 것을 나타냅니다. 따라서 인터페이스가 본질적으로 의미하는 것 - 객체가 똑같은 것을 나타내지 만 다르게 행동한다는 것입니다. – Jared
@Jared'setPerson'은 DoActivity와 다르지 않습니다. 클래스 선언 옆에'implements'이 있습니까? 이것은'setPerson'이 DoActivity 객체라는 것을 의미합니다. – smac89