[英]How to improve Java generics wildcard signature
我正在尝试创建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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.