相关疑难解决方法(0)

Java Enum定义

我以为我很了解Java泛型,但后来我在java.lang.Enum中遇到了以下内容:

class Enum<E extends Enum<E>>
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何解释这个类型参数?用于提供可以使用类似类型参数的其他示例的加分点.

java generics enums crtp

146
推荐指数
3
解决办法
2万
查看次数

为什么在java enum中声明为Enum <E extends Enum <E >>

可能重复:
java Enum定义

更好的公式化问题,不被认为是重复的:
如果Enum声明没有递归部分,那么在Java中会有什么不同

如果语言设计师只使用Enum <E extends Enum>会对语言产生什么影响呢?

现在唯一的区别就是有人会写作

A extends Enum<B>

但是因为在java中不允许扩展枚举仍然是非法的.我也在想有人为jvm提供一个字节码,将字符串定义为扩展枚举 - 但是泛型不会影响它,因为它们都被删除了.

那么宣言的重点是什么呢?

谢谢!

编辑 为简单起见,让我们来看一个例子:

interface MyComparable<T> {
    int myCompare(T o);
}

class MyEnum<E extends MyEnum> implements MyComparable<E> {
    public int myCompare(E o) { return -1; }
}

class FirstEnum extends MyEnum<FirstEnum> {}

class SecondEnum extends MyEnum<SecondEnum> {}

这个类结构有什么问题?可以做些什么"MyEnum <E扩展MyEnum <E >>"会限制?

java enums

37
推荐指数
1
解决办法
2万
查看次数

Java - 扩展自身的接口

我已经使用这个网站大约6个月了,是时候问我的第一个问题了,因为我找不到答案,至少不是我能理解的答案!

在这段代码中,为什么这个接口会自行扩展?

public interface PositionedVertex<V extends PositionedVertex<V>> {

/**
 * @return Position for node data.
 */
public Point getPosition();
}
Run Code Online (Sandbox Code Playgroud)

这段代码不一样吗?:

public interface PositionedVertex<V> {

/**
 * @return Position for node data.
 */
public Point getPosition();
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java extends interface

10
推荐指数
2
解决办法
1382
查看次数

在泛型中接受自身作为类型参数会有什么用处

我在一个不相关的问题上看到了一些代码,但它让我很好奇,因为我从来没有看到过使用Java Generics这样的构造.创建一个可以作为类型参数本身或其自身后代的泛型类会有什么用处.这是一个例子:

abstract class A<E extends A<E>> {
    abstract void foo(E x);
}
Run Code Online (Sandbox Code Playgroud)

我想到的第一件事就是将列表作为参数的列表.使用这段代码感觉很奇怪,你如何声明A类型的变量?递归声明!?

这甚至有用吗?如果是这样,你们中的任何人在代码中看到了吗?怎么用?


编辑

事实上,事实证明我的问题与这个只有不同的措辞相同,但这个问题的答案也将回答我的问题.

同样感谢参考奇怪的重复模板模式,该模式给出了一些历史背景和关于该主题的进一步解释.

这篇旧博客文章可能会给我们Java家伙提供最好的解释.

现在很难在这里选择一个正确的答案,因为它们都很有用,所以我会选择最终产生最多阅读材料的那个(上面引用)

java generics

9
推荐指数
2
解决办法
3342
查看次数

标签 统计

java ×4

enums ×2

generics ×2

crtp ×1

extends ×1

interface ×1