在Java中使用带有接口的原始类型

时间:2014-02-06 06:28:28

标签: java generics raw-types

我正在尝试查找有关原始类型的信息,是否可以使用接口以下方式:

public class GlobalConverter {

    public interface Listener {
        void onReady(Object t);
    }

    public void convert(String string, Class<?> resultClass, Listener listener) {
        try {
            listener.onReady(resultClass.newInstance());
        } catch (IllegalAccessException e) {
        } catch (InstantiationException e) {
        }
    }

    public void test() {
        convert("Test", MyClass.class, new Listener() {

            @Override
            public void onReady(Object object /* Possible to be MyClass object ? */) {
            }
        });
    }
}

我想要实现的目标如上所述,但对于最终用户,onReady回调将返回resultClass类型的对象。任何提示/解释都受到高度赞赏。

感谢。

1 个答案:

答案 0 :(得分:3)

我会让Listener本身通用:

public interface Listener<T> {
    void onReady(T t);
}

然后convert方法也应该是通用的:

public <T> void convert(String string, Class<T> resultClass, Listener<T> listener) {
    try {
        listener.onReady(resultClass.newInstance());
    } catch (IllegalAccessException e) {
    } catch (InstantiationException e) {
    }
}

并称之为:

convert("Test", MyClass.class, new Listener<MyClass>() {
        @Override
        public void onReady(MyClass object) {
        }
    });