在查找时限定不查找重写,只查找调用,可以使用以下步骤来实现:

  1. 获取 'rider' 对象的类对象。
  2. 使用类对象的 getDeclaredMethods() 方法获取该类对象的所有方法,包括私有方法和继承的方法。
  3. 遍历所有方法,使用 getMethodAnnotations() 方法获取每个方法的注解,并判断是否包含调用相关的注解。
  4. 如果方法的注解中包含调用相关的注解,则将该方法添加到结果列表中。

以下是一个示例代码,实现了上述步骤:

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        Class<?> riderClass = Rider.class;

        List<Method> calledMethods = new ArrayList<>();

        Method[] methods = riderClass.getDeclaredMethods();
        for (Method method : methods) {
            Annotation[] annotations = method.getAnnotations();
            for (Annotation annotation : annotations) {
                if (annotation.annotationType() == Call.class) {
                    calledMethods.add(method);
                }
            }
        }

        // 输出结果
        for (Method method : calledMethods) {
            System.out.println(method.getName());
        }
    }
}

class Rider {
    @Call
    public void ride() {
        System.out.println('Riding...');
    }

    @Override
    public void toString() {
        System.out.println('Rider toString');
    }
}

@interface Call {
}

在上述示例中,我们定义了一个 Rider 类,其中包含一个带有 @Call 注解的 ride() 方法和一个重写的 toString() 方法。我们通过遍历 Rider 类的所有方法,并判断方法的注解是否包含 @Call 注解来筛选结果。运行示例代码后,将只输出 ride 方法,而不输出重写的 toString 方法。

Rider 类查找调用方法:如何排除重写方法并只查找调用方法

原文地址: https://www.cveoy.top/t/topic/ddMs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录