作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图弄清楚如何将类类型转换为其基本类型,以便可以编译java程序。详细来说,我们有代码如下。代码类似于https://github.com/twitter/chill/blob/develop/chill-thrift/src/main/java/com/twitter/chill/thrift/TBaseSerializer.java#L56
interface TBase {.... }
class Deserializer {
public TBase read(Kryo kryo, Input input, Class<TBase> tBaseClass) {...}
...
}
class Event implements TBase {.... }
Deserializer = new Deserializer(...)
deserializer.read(kryo, input, Event.class);
我在使用 java8 时遇到以下错误:
incompatible types: Class<Event> cannot be converted to Class<TBase>
我们无法将 TBase 接口(interface)更改为类。有了这个约束,我该如何解决这个类型兼容性问题呢?是Class<Event>
还有Class<TBase>
?
我还尝试声明 Class<? extends TBase>
作为参数类型。通过这种方法,我得到“TBaseSerializer”中的“read(Kryo,Input,Class)”与“com.twitter.chill.thrift.TBaseSerializer”中的“read(Kryo,Input,Class)”冲突;两种方法都有相同的删除,但两者都不覆盖另一个。
最佳答案
您应该在此处使用通配符
public TBase read(Kryo kryo, Input input, Class<? extends TBase> tBaseClass) {...}
这意味着从 TBase 派生的任何内容都可以作为参数传递。您可以阅读更多 here
关于java - 如何将java类类型转换为其基类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62146173/
我是一名优秀的程序员,十分优秀!