java - 为什么在这种情况下 Class 没有很好的泛型类型?

标签 java

在这段代码中,为什么类型不能声明为Class<? extends B>

public class Foo<B> {
    public void doSomething(B argument) {
        Class<? extends Object> type = argument.getClass();
    }
}

最佳答案

这个问题是 Java 的语法不允许 getClass() 说它返回的类型与其定义的类匹配,就编译器而言,这不是特例。所以你被迫转换结果。

在许多情况下,您希望能够指定this 类型,例如用于链接,所以我希望有一天他们会包含此功能。

你可以写

Class<? extends this> getClass();

public this clone(); // must return a type of this class.

class ByteBuffer {
    this order(ByteOrder order);
}

class MappedByteBuffer extends ByteBuffer {
}

// currently this won't work as ByteBuffer defines order()
MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, fc.size())
                         .order(ByteOrder.nativeOrder());

关于java - 为什么在这种情况下 Class 没有很好的泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13739800/

相关文章:

java - 在连接字段定义上使用 @ManyToOne 时,出现 Unresolved 属性异常

java - 从 Hashmap 打印特定记录

java - LWUIT 画家 : How to draw a line on top of a Image Label?

Java:ImageIcon 与图像差异

Java 正则表达式字符串#replaceAll 替代

java - 将 Java 小程序导出到 .jar

Java、Akka Actor 和有界邮箱

java - 使用java比较字符串

java - InetAddress 类中的 isReachable 问题

java - 获取Java泛型的类,以及泛型的接口(interface)实现