使用反射检索对象的类名


import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Member;
import static java.lang.System.out;
public class TryReflection {
    public TryReflection() {
        int a = 0;
    }
    public static int getMax() {
        int max = 0;
        return max;
    }
    public static void main(String[] args) {
        TryReflection myObject = new TryReflection();
        int ret = myObject.getMax();
        System.out.printf("max is %dn", ret);
        Method[] methods = myObject.class.getMethods();
        // for(Method method:methods) {
        // System.out.println("method = " + method.getName());
        // }
    }
}

我不明白为什么我得到以下错误时,我编译上面的代码。

TryReflection.java:31: error: cannot find symbol
    Method[] methods = myObject.class.getMethods();
                       ^
  symbol:   class myObject
  location: class TryReflection
1 error

myObject是类的实例,因此应该使用myObject.getClass()。或者直接调用TryReflection.class

既然您有一个可用的对象实例,那么您需要使用myObject.getClass()

TryReflection myObject = new TryReflection();
int ret = myObject.getMax();
System.out.printf("max is %dn", ret);
Method[] methods = myObject.getClass().getMethods();
for (Method method : methods) {
    System.out.println("method = " + method.getName());
}

请参考官方教程了解更多详细信息。

相关内容

  • 没有找到相关文章

最新更新