Подстановочные знаки в дженериках: "? Супер Т «работает пока»? расширяет T "не?

Мой вопрос о дженериках в 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 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 с изображением круга

Теперь проблема заключается в том, что кликаемая область ограничена изображением независимо от того, насколько велика фактическая кнопка:

Button problem

Мой код кнопки:


Вопрос: как заставить всю область кнопки реагировать на нажатие? Я хочу сохранить его прозрачным и без границ, как сейчас.

16
задан Community 23 May 2017 в 12:01
поделиться

1 ответ

У меня есть Кнопка, где содержанием является Сетка, содержащая Изображение и TextBlock

, я зафиксировал активируемую по щелчку область путем добавления Прозрачного фона к сетке

Background="#00000000"
0
ответ дан 30 November 2019 в 21:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: