我正面临一个相当大的多模块maven项目.我想看看root(父)项目是如何以groupId:artifactId的形式由子项目/子项目组成的(可能有一些标识来反映层次结构).
当然我可以编写自己的插件来获得这个打印输出,但我认为必须有一些可用的架子.
这是一个学术问题,旨在更好地理解泛型在这种情况下的行为。
该Enum类型被描述为“所有 Java 语言枚举类型的公共基类”。它的定义是:
public abstract class Enum<E extends Enum<E>>
implements Comparable<E>, Serializable {
}
Run Code Online (Sandbox Code Playgroud)
现在,我可以用这个定义定义一个字段:
public class MyClass {
public Enum<MyEnum> field;
}
Run Code Online (Sandbox Code Playgroud)
一切都很好。现在,更进一步。因为Enum<MyEnum>显然等同于MyEnum这会让我相信根据定义我也可以写:
public class MyClass {
public Enum<Enum<MyEnum>> field;
}
Run Code Online (Sandbox Code Playgroud)
但是现在编译器实际上阻止了我:Type parameter 'java.lang.Enum' is not within its bound; should extend 'java.lang.Enum<MyEnum>>它根据定义进行操作,因为它仍然满足:E extends Enum<E>。当然,您不允许这种重复(或者可能更好,发生)构造的原因有很多,但给出的一个对我来说确实是错误的。
另一方面,如果我要定义一个这样的类(类似于 的定义Enum)
public class Wrapper<T extends Number> {
}
Run Code Online (Sandbox Code Playgroud)
我将能够编写一个类:
public class Wrapper<T extends Number> {
}
Run Code Online (Sandbox Code Playgroud)
我是忽略了什么还是我的分析被误导了?
enums ×1
generics ×1
java ×1
maven ×1
multi-module ×1
pretty-print ×1
printing ×1
structure ×1