0
我們如何確定一個特定的方法是屬於抽象類還是接口?有什麼方法可以識別它嗎?我們如何確定某個方法是屬於抽象類還是接口?
我們如何確定一個特定的方法是屬於抽象類還是接口?有什麼方法可以識別它嗎?我們如何確定某個方法是屬於抽象類還是接口?
在這個問題上唯一有效的答案應該是:
你不想知道這一點。如果你需要知道,你的課程設計有問題。
但是,你至少可以通過接口反射來做到這一點。
小心你的第一次嘗試,因爲這將返回false
,即使它是在類的接口中聲明的。 (見下面的例子)
TestImpl.class.getMethod("test").getDeclaringClass().isInterface(); // false
你需要做更多的思考魔術得到正確的結果是這樣的:
public class ReflectionTest {
interface Test {
void test();
}
class TestImpl implements Test {
@Override
public void test() {
}
}
private static boolean isInterfaceMethod(Class clazz, String methodName) throws NoSuchMethodException, SecurityException {
for (Class interfaze : clazz.getMethod(methodName).getDeclaringClass().getInterfaces()) {
for (Method method : interfaze.getMethods()) {
if (method.getName().equals(methodName)) {
return true;
}
}
}
return false;
}
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
System.out.println(isInterfaceMethod(TestImpl.class, "test")); // true
}
}
只是在想,在現實世界中這種情況下會來,你想知道該方法屬於接口或抽象類? – Jayesh