Используйте instanceof со статическим внутренним классом из другого класса - PullRequest
3 голосов
/ 22 сентября 2010
public class A {
    static class B {
    }
}

public class C {
   void m(X x) {
      if (x instanceof A.B) { ... } // not working
   }
}

Есть ли способ проверить, является ли какой-либо объект (x) внутренним классом (B) некоторого класса (A) в этом сценарии?

Я получаю эту ошибку, ноК сожалению, я не могу контролировать классы A и B.

Тип AB не виден

1 Ответ

3 голосов
/ 22 сентября 2010

Я сделал этот ответ как комментарий, но с небольшим размышлением (мышление, а не кодирование!) Я превращаю его в ответ.

Поскольку у вас нет контролячерез A или B, и B имеет доступ к пакету, вы можете видеть его только из классов, находящихся в том же пакете, что и A. Так что вы можете сделать - если вы не хотите перемещать C в тот же пакет - написатьслужебный класс - назовите его U - с булевой функцией, принимающий X и возвращающий, является ли он экземпляром AB

...