Очевидно, что если Object
относится к java.lang.Object
(как определено загрузчиком загрузчиков классов), это невозможно, поскольку каждый класс в процессе должен происходить от java.lang.Object
Однако вы можете определить что-то еще, называемое Object
во внутренней области видимости, скрывая java.lang.Object
.
Вот пример, где имя Object
относится к java.lang.Object
в начале метода, а позже к локальному классу:
public static void main(String[] args) {
Object value = "42"; class Object {}
System.out.println(value instanceof Object);
}
Это небольшой обман, потому что объявление value
- это не одно утверждение, а утверждение, за которым следует определение локального класса.
Я тестировал это в Eclipse 3.5.0, но я не удивлюсь, если другие компиляторы будут вести себя по-другому с таким патологическим примером, как этот.