作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码可以正常工作:
class ingen
{
static class X
{
static class inner {}
static class A extends inner {}
static class B extends inner {}
}
static class Y
{
static class inner {}
static class A extends inner {}
static class B extends inner {}
}
X makeX (X.inner ... inner)
{
return new X();
}
Y makeY (Y.inner ... inner)
{
return new Y();
}
}
现在我想为 make
方法编写一个泛型。但是我找不到如何指定泛型类的内部类的方法。我试过这个但它没有编译:
<T> T make (T.inner ... inner)
有没有办法写这个泛型?
最佳答案
为什么不重载 make
?
X make(X.inner... inner) {
return new X();
}
Y make(Y.inner... inner) {
return new Y();
}
我不相信有一种方法可以用泛型做到这一点,因为 X
和 Y
之间没有关系,所以它们不能统一首先是一个单一的类型参数(尽管即使它们是相关的,它仍然是不可能的,因为 inner
是静态的)。
如果你选择稍微重新设计你的类,你可以尝试这样的事情:
class Base {
class inner {
}
}
class X extends Base {
class A extends inner {
}
class B extends inner {
}
}
class Y extends Base {
class A extends inner {
}
class B extends inner {
}
}
<T extends Base> Base make(T.inner... inner) {
...
}
虽然我会花点时间退后一步,考虑一下这是否真的是您想要做的。看起来很复杂,也许有更简单的解决方案?
关于java - 如何在 Java 中指定泛型类的内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19321706/
我是一名优秀的程序员,十分优秀!