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

前端之家收集整理的这篇文章主要介绍了java – 为什么在这种情况下,Class没有很好的泛型类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这段代码中,为什么不能将类型声明为Class?延长B>
public class Foo<B> {
    public void doSomething(B argument) {
        Class<? extends Object> type = argument.getClass();
    }
}

解决方法

这个问题是Java的语法不允许getClass()表示它返回一个与其定义的类匹配的类型,而且就编译器而言,这不是一个特殊情况.所以你被迫投降了.

在许多情况下,您希望能够指定此类型,例如为了链接,所以我希望他们包括这个功能有一天.

你可以写

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,fc.size())
                         .order(ByteOrder.nativeOrder());

猜你在找的Java相关文章