如何检查类中的呼叫者方法是否是接口的实例



我的接口如下

public interface AccessController {
}

我的课程如下

public class LocalDriver {
   WebDriver driver;
   public static WebDriver driver() {
       if ("need to know?" instanceof AccessController)
           return driver;
       else
           return null;
   }
}

然后我有一个呼叫者类

public class CallerClass {
    public static void main(String[] args) {
        LocalDriver.driver();
    }
}

现在如何检查CallerClass是否是AccessController CC_3 driver()中的CC_3方法?

您可以将呼叫者传递到您的static方法中并进行询问。类似:

public static WebDriver driver(Object caller) {
   if (caller instanceof AccessController)
    return driver;
   else 
    return null;
 }

您将以以下方式使用它:

// In the caller
LocalDriver.driver(this);

如果您还需要从静态上下文中支持此概念,则可以尝试:

public static WebDriver driver(Class<?> callerClass) {
   if (caller.isAssignableFrom(AccessController.class))
    return driver;
   else 
    return null;
 }

这可以从两种情况下称为:

LocalDriver.driver(this.getClass());  // instance context
LocalDriver.driver(CallerClass.class);  // static context

最新更新