gpt4 book ai didi

java - Comparable 接口(interface)前无接口(interface)词

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:55 28 4
gpt4 key购买 nike

这是细节,但我想知道为什么会这样。

示例代码:

Class klasa = Enum.class;
for(Type t : klasa.getGenericInterfaces())
System.out.println(t);

程序输出:

java.lang.Comparable<E>
interface java.io.Serializable

为什么在输出java.lang.Comparable<E>之前没有接口(interface)词.是界面,是吗?

在我看来输出应该是:

**interface** java.lang.Comparable<E>
interface java.io.Serializable

比较特殊处理?

最佳答案

toString method of ParametrizedTypeImpl (Comparable的内部Type),表示无论如何都不输出“interface”:

public String toString() {
StringBuilder sb = new StringBuilder();

if (ownerType != null) {
if (ownerType instanceof Class)
sb.append(((Class)ownerType).getName());
else
sb.append(ownerType.toString());

sb.append(".");

if (ownerType instanceof ParameterizedTypeImpl) {
// Find simple name of nested type by removing the
// shared prefix with owner.
sb.append(rawType.getName().replace( ((ParameterizedTypeImpl)ownerType).rawType.getName() + "$",
""));
} else
sb.append(rawType.getName());
} else
sb.append(rawType.getName());

if (actualTypeArguments != null &&
actualTypeArguments.length > 0) {
sb.append("<");
boolean first = true;
for(Type t: actualTypeArguments) {
if (!first)
sb.append(", ");
if (t instanceof Class)
sb.append(((Class)t).getName());
else
sb.append(t.toString());
first = false;
}
sb.append(">");
}

return sb.toString();
}

另一方面,在 ClasstoString 方法中,如果类是接口(interface),则明确输出“interface”。

public String toString() {
return (isInterface() ? "interface " : (isPrimitive() ? "" : "class "))
+ getName();
}

关于java - Comparable 接口(interface)前无接口(interface)词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19267430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com