Мой вопрос о дженериках в Java 7. Предположим, у нас есть такая иерархия классов:
interface Animal {}
class Lion implements Animal {}
class Butterfly implements Animal {}
Так же, как в Java Generics Tutorial
Также у нас есть класс
class Cage {
private List arr = new ArrayList<>();
public void add(T t) {
arr.add(t);
}
public T get() {
return arr.get(0);
}
}
И вот код, который использует эти классы:
public static void main(String[] args) {
Cage extends Animal> cage = new Cage<>();
Animal a = cage.get(); //OK
cage.add(new Lion()); //Compile-time error
cage.add(new Butterfly()); //Compile-time error
}
Вопрос # 1:
Я прочитал здесь об этих проблемах, но был просто Клетка >
. Но я говорю компилятору расширяет Animal >
, так что тип T
в клетке
будет любым из подтипов типа Animal. Так почему это все еще дает ошибку во времени компиляции?
Вопрос # 2:
Если я указываю Cage супер животное > клетка =...
вместо Клетка расширяет животное > клетка =...
все работает нормально, и компилятор не говорит ничего плохого. Почему в этом случае он работает нормально, в то время как в приведенном выше примере он дает сбой?
-121--1872820-
Я использую следующий стиль кнопок, который удаляет границы и делает прозрачный фон, чтобы сделать мои кнопки изображения:
Стиль из следующего ответа: Кнопка WPF с изображением круга
Теперь проблема заключается в том, что кликаемая область ограничена изображением независимо от того, насколько велика фактическая кнопка:
Мой код кнопки:
Вопрос: как заставить всю область кнопки реагировать на нажатие? Я хочу сохранить его прозрачным и без границ, как сейчас.
У меня есть Кнопка, где содержанием является Сетка, содержащая Изображение и TextBlock
, я зафиксировал активируемую по щелчку область путем добавления Прозрачного фона к сетке
Background="#00000000"