универсальный (нестатический) метод с параметром Class для безопасности типов, как он работает? - PullRequest
3 голосов
/ 09 декабря 2011

это мой код, Control - это swt-ui-widget, метод find должен возвращать компонент с типом, переданным в "clazz". Я знаю, как сделать это со статическими методами, но это не работает, если это метод экземпляра.

package org.uilib.swt.templating;

import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Control;

public class Component<T extends Control> {

    public final String name;
    public final T control;

    public Component(String name, T control) {
        this.name = name;
        this.control = control;
    }

    public String getName() {
        return name;
    }

    public T getControl() {
        return control;
    }

    public Component<E> find(String query, Class<E extends Control> clazz) {

        return null;
    }
}

я хочу сделать следующее:

Component<Button> x = this.find("asd", Button.class);

Ответы [ 2 ]

6 голосов
/ 09 декабря 2011

Насколько я понимаю, вам нужен следующий общий метод:

public <E extends Control> Component<E> find(String query, Class<E> clazz) { ... }
1 голос
/ 09 декабря 2011
public <T extends Component> T find(String query, Class<T> clazz) {
        return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...