2013-02-15 3 views
5

특정 클래스를 선언하지 않고 특정 인터페이스를 구현하는 특정 클래스와 동일한 시간이어야하는 매개 변수를 사용하여 메서드를 선언하는 방법은 무엇입니까?
ImageX 클래스를 선언하고 인터페이스 태깅을 선언했다고 가정합니다. 그래서 Tagging 인터페이스를 구현하는 ImageX 인스턴스 만 수신해야하는 다른 클래스 나 메서드를 만들어야합니다. 그런 방법을 선언하는 방법? 예 :메서드 매개 변수는 특정 인터페이스를 구현하는 특정 클래스의 obj 여야합니다.

private void someMethod (ImageX<Tagging> obj){} 

그러나 이것은 물론 올바르지 않습니다. 예 필요한 인터페이스를 구현하는 경우 obj를 확인할 수 있지만 해당 매개 변수를 확인하고 싶습니다. 그리고 만약 그것이 어떤 방법이 아니라 생성자가 아니면 ...
아마 제네릭에 대해 물어 보는 건가요?

당신이 방법은 일반적인하고 단지 형 교차 사용하여 ImageX를하고 태그를 모두있는 개체 받아 들일 수
+1

그래서 당신은'Tagging' 인터페이스를 갖고 싶어, 그리고 '클래스는 * Tagging을 구현하지 * 않은 클래스이고,'Tagging'을 구현하는 경우에만'ImageX'의 인스턴스를 받아들이는 메소드를 원합니다. 나는 그것이 리팩터링의 필요성을 나타내고 싶어한다고 제안 할 것입니다. –

+0

네, 원합니다. 그것은 android에 관한 것이고 클래스는 필요한 인터페이스를 구현하는 Activity입니다. 그러나 모든 액티비티가 그것을하는 것은 아니며 액티비티를 서브 클래 싱하려는 것이 아닙니다. – Stan

+0

@ stan : 알겠습니다. 다행히도, assylias는 답을 가지고있었습니다. –

답변

10

: 별도로`ImageX를

private <T extends ImageX & Tagging> void someMethod (T obj){} 
+0

+1 Niiiiice. 나는 그것을 피하고 싶지만 좋을만큼 좋다. (일반적인 방법은 멋지다.) 누구나 행동을보고 싶다면 : http://pastie.org/6179036 –

+0

@ T.J.Crowder 그것은 질문에 대답하지만, 반드시 당신이 지적한대로 최선의 접근법은 아닙니다! – assylias

관련 문제