【问题标题】:GWT GIN: Can Gijector return generic of unknown type?GWT GIN:Gijector 可以返回未知类型的泛型吗?
【发布时间】:2014-03-20 10:52:56
【问题描述】:

我正在使用 GWT 和 GIN 开发 webapp,我真的很好奇是否可以使用 Ginjector 返回泛型类型,但在使用之前未知实现?

也许代码会解决我的问题:

我的杜松子酒模块:

@GinModules(GinModule.class)
public interface ShowcaseInjector extends Ginjector {
    <T> ValuePickerQuestionComposite<T> getValuePickerQuestion();
}

要注入的类

public class ValuePickerQuestionComposite<T>{
    //some implementation with T required

}

杜松子酒的用法:

ShowcaseInjector injector = GWT.create(ShowcaseInjector.class);
ValuePickerQuestionComposite<Integer> instance = injector.getValuePickerQuestion();

由于内部有通用小部件,我可能需要实现 Integer、String、Double。 根据我的研究,我发现了一些绑定,但对他们来说,Ginjector 确切地知道泛型是什么类型,所以它类似于

ValuePickerQuestionComposite<Integer> getValuePickerQuestion();

但我希望它在使用之前是未知的。 我的想法甚至可能吗?如果是,有人可以指出我应该使用哪种类型的配置? 提前致谢!

【问题讨论】:

    标签: java generics gwt inject gwt-gin


    【解决方案1】:

    所有东西都必须在编译时通过静态分析知道,所以不行。

    此外,Java 实现泛型的方式,被调用的方法永远不会知道正在使用哪个类型的参数;这里的类型参数仅用于类型安全(某种程度)以避免强制转换。

    【讨论】:

    • 如果我知道我在编译时需要什么:例如,我确定,我想有 Integers 的实例,我可以通过 Integer.class 让模块知道这是什么类型吗?是?
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多