클래스를 확장하고 인터페이스를 구현하는 일반 클래스
클래스의 종속성을 줄이기 위해 예를 들어 일부 클래스를 확장하고 인터페이스를 구현하는 생성자에 매개 변수 (일반 클래스 사용)를 보내고 싶습니다.
public interface SomeInterface{
public void someMethod();
}
public class MyFragment extends Fragment implements SomeInterface{
//implementation
}
//here is classs, that I need to create. T must extend Fragment and implements
//SomeInterface. But, I'm afraid, if I'll use MyFragment directly, it will create a
//dependence of SomeClass from MyFragment.
public class SomeClass /*generic?*/ {
public SomeClass(T parent);
}
가능합니까?
또한 T 클래스를 사용하여 T.getActivity ()를 컨텍스트로 사용하여 뷰를 만들고 싶습니다.
T는 Fragment를 확장하고 SomeInterface를 구현해야합니다.
이 경우 SomeClass
다음과 같이 선언 할 수 있습니다 .
public class SomeClass<T extends Fragment & SomeInterface>
T
확장 Fragment
하고 구현 하려면 유형의 개체가 필요합니다 SomeInterface
.
또한 T 클래스를 사용하여 T.getActivity ()를 컨텍스트로 사용하여 뷰를 만들고 싶습니다.
나는 안드로이드에 익숙하지 않지만 만약 getActivity()
선언 된 퍼블릭 인스턴스 메소드 Fragment
라면 T
컴파일러가 모든 T
s가 그 메소드를 상속해야한다는 것을 알기 때문에의 인스턴스에서 그것을 호출하는 것이 완전히 가능할 것 입니다.
이런 일을 하시겠습니까?
class SomeClass {}
interface SomeInterface{
public void someMethod();
}
class AGenericClass<T> extends SomeClass implements SomeInterface {
public void someMethod() {}
}
이것은 허용됩니다.
하지만 질문에 대한 Android는 무엇입니까? 제가 뭔가 빠진 것 같아서 좀 더 자세한 정보를 제공해 주 시겠어요?
아래 업데이트
나는 여전히 당신이 무엇을 하려는지 완전히 확신하지 못하며, 즉시 의존성에 대해 걱정할 필요가 있는지도 확신하지 못하지만, 이것은 또한 제한된 유형 매개 변수를 사용하여 합법적입니다 .
interface SomeInterface{
public void someMethod();
}
class Fragment {
public void aMethodInFragment() { }
}
public class SomeClass <T extends Fragment & SomeInterface> {
public SomeClass(T parent) {
parent.someMethod();
parent.aMethodInFragment();
}
}
type 매개 변수 는이 하위 클래스 <T extends Fragment & SomeInterface>
가 T
되어야 Fragment
하고 구현 해야 함을 지정합니다 SomeInterface
.
It's easy if i understand you correct you to have some type T which is extending Fragment and implementing some interface. So you have to write something like that.
abstract class TemplateFragment extends Fragment implements SomeInterface{}
and then in your classes
class SomeClass<T extends TemplateFragment> {
...
}
It will do the trick.
ReferenceURL : https://stackoverflow.com/questions/8871285/generic-class-that-extends-class-and-implements-interface
'IT Share you' 카테고리의 다른 글
Java Calendar 세트 (int year, int month, int date)가 올바른 날짜를 반환하지 않는 이유는 무엇입니까? (0) | 2021.01.10 |
---|---|
인증서 저장소에서 매니페스트 서명 인증서를 찾을 수 없습니다. (0) | 2021.01.10 |
Python의 values () 사전 메서드에 해당하는 Javascript (0) | 2021.01.10 |
WPF의 텍스트 상자 바인딩 업데이트 (0) | 2021.01.10 |
App.config의 connectionStrings configSource가 작동하지 않습니다. (0) | 2021.01.10 |