在变量

时间:2016-01-04 12:25:43

标签: java

Class c = v.getClass();
try {
    Method m = c.getMethod("something");
    if(!m.getReturnType().equals(Boolean.TYPE)) {return false;}
} catch(NoSuchMethodException e) {return false;}

...其中v是某个类的对象 当我尝试编译时,我得到:

  

错误:找不到符号
            方法m = c.getMethod("某事");
            ^

Method是一种驻留在java.lang.reflect.Method中的类型。据我所知java.lang,默认导入后续内容,但我甚至明确地这样做了:

import java.lang.*;

所以我的问题是:如何让我的编译器识别出类Method,或者如何存储getMethod的返回值呢?

P.S:请忽略对getMethod的未经检查的调用,这将是一个不同时间的问题(可能是一个不同的问题)。

2 个答案:

答案 0 :(得分:8)

java.lang.包中的类会自动导入,但这不适用于嵌套包。这不仅适用于java.lang.*,而且通常对于所有包 - 嵌套包不会自动导入,如果您需要嵌套包中的某些类,则应明确导入它。像这样:

import java.lang.reflect.Method;

答案 1 :(得分:2)

您需要导入java.lang.reflect.Methodjava.lang.reflect.*。导入java.lang.*不包含java.lang.reflect包,因为java.lang.reflect不是java.lang的子包(Java中没有包层次结构)。