繁体   English   中英

如何改进Java泛型通配符签名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM