반응형
클래스가 Java에서 인터페이스를 구현하는지 확인
나는 Class
물건이 있습니다. Class
객체가 나타내는 유형이 특정 인터페이스를 구현 하는지 확인하고 싶습니다 . 이것이 어떻게 성취 될 수 있을지 궁금합니다.
다음 코드가 있습니다. 기본적으로 지정된 패키지의 모든 클래스 배열을 가져옵니다. 그런 다음 배열을 살펴보고 인터페이스를 구현하는 Class 객체를지도에 추가하고 싶습니다. 문제는 isInstance()
객체를 매개 변수로 취하는 것입니다. 인터페이스를 인스턴스화 할 수 없습니다. 그래서 나는 이것에 약간의 손실이 있습니다. 어떤 아이디어?
Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
if(clazz.isInstance(/*Some object*/)) //Need something in this if statement
{
retVal.put(clazz.getSimpleName(), clazz);
}
}
다음을 사용해야합니다 isAssignableFrom
.
if (YourInterface.class.isAssignableFrom(clazz)) {
...
}
아래 함수를 사용하여 구현 된 모든 인터페이스를 얻을 수 있습니다.
Class[] intfs = clazz.getInterfaces();
사용 class.getInterfaces()
하고 인터페이스 클래스가 있는지 확인할 수 있습니다 .
Class someInterface; // the interface you want to check for
Class x; //
Class[] interfaces = x.getInterfaces();
for (Class i : interfaces) {
if (i.toString().equals(someInterface.toString()) {
// if this is true, the class implements the interface you're looking for
}
}
".class"를 추가하여 인스턴스를 설정할 수도 있습니다.
Class[] classes = ClassUtils.getClasses(handlersPackage);
for(Class clazz : classes)
{
if(Interface.class.isAssignableFrom(clazz))
{
retVal.put(clazz.getSimpleName(), clazz);
}
}
참고 URL : https://stackoverflow.com/questions/12145185/determine-if-a-class-implements-a-interface-in-java
반응형
'Programing' 카테고리의 다른 글
수퍼 뷰의 수퍼 뷰와 관련하여 UIView의 위치를 가져옵니다. (0) | 2020.10.18 |
---|---|
레이아웃을 아래로 스크롤하려면 어떻게해야합니까? (0) | 2020.10.18 |
Javascript에서 여러 공백을 모두 제거하고 단일 공백으로 교체하십시오. (0) | 2020.10.18 |
x86 어셈블리의 레지스터에 사용되는 푸시 / 팝 명령어의 기능은 무엇입니까? (0) | 2020.10.18 |
jQuery는 1 div를 제외한 페이지의 아무 곳이나 클릭합니다. (0) | 2020.10.18 |