我正在尝试创建DI容器get
方法,但努力与签名。目前我有这个定义:
public Object get(Class<?> key) {
// returns instance of `?`
}
我不喜欢的代码部分是使用get
方法:
IRouter router = (IRouter) container.get(IRouter.class);
我必须用(IRouter)
回归。任何想法如何改变方法签名以使这样的用法?
IRouter router = container.get(IRouter.class);
提前感谢任何想法!
通过使用作用域方法参数化类型:
public <T> T get(Class<T> key) {
// ...
return (T) foo;
}
在这里,我认为foo
不是键入T
。
如果它已经被输入为T
,你当然可以在没有强制转换的情况下返回它。
你可以调用它:
IRouter router = container.get(IRouter.class);