Допустим, что у вас нет возможности менять классы X и C из предыдущей головоломки. Можете ли вы, не используя reflection, получить значение поля Z в классе X.Y?
Оказывается можно ссылаться на перекрытое имя типа. Просто надо использовать это имя в таком синтаксическом контексте, где разрешено использовать тип, но нельзя использовать переменную. Есть много способов решить эту задачу:
public class FadeToBlack1 {
public static void main(String args []) {
System.out.println(((X.Y) null).Z)
}
}
public class FadeToBlack2 {
static class XY extends X.Y {
}
public static void main(String args []) {
System.out.println(XY.Z)
}
}
public class FadeToBlack3 { // for Java 5 and later
public static <T extends X.Y> void main(String args []) {
System.out.println(T.Z)
}
}
Комментариев нет:
Отправить комментарий