【问题标题】:How to check if the caller method in a class is instance of an interface? [duplicate]如何检查类中的调用者方法是否是接口的实例? [复制]
【发布时间】:2017-12-21 00:29:58
【问题描述】:

我有一个界面如下

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 是否是另一个类中driver() 方法中的instanceOf AccessController interface

【问题讨论】:

  • 有什么意义?你不知道你所在的班级是否实现了AccessController? “调用者方法”是什么意思?
  • 修改了我的问题

标签: java


【解决方案1】:

您可以将调用者传递给您的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

【讨论】:

  • 调用者是一个静态方法。最好接受Class&lt;?&gt; 参数。
猜你喜欢
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 2018-10-19
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
相关资源
最近更新 更多