gpt4 book ai didi

java - Thrift 类型作为通用类型

转载 作者:行者123 更新时间:2023-12-02 09:35:45 65 4
gpt4 key购买 nike

我正在使用 Apache thrift,它生成如下所示的 Java 类:

public class MyEvent implements org.apache.thrift.TBase<MyEvent, MyEvent._Fields>

我想创建一个容器类,它采用实现 TBase 的泛型。我想编写如下所示的代码:

( Kotlin )

val msg = MyContainer<MyEvent>()

但是,我做不到 class MyContainer<T: TBase>因为我需要填写 TBase 的两个参数,所以我做了这样的事情:

class MyContainer<T: TBase<T,F>, F: TFieldIdEnum>

但这需要我编写如下代码:

val msg = MyContainer<MyEvent, MyEvent._Fields>()

我认为它可以工作,否则可以让我获得我需要的功能,但是无论如何我可以更简洁地告诉java“我需要一个用T和T._Fields类型实现TBase的T”,这样我就可以做 val msg = MyContainer<MyEvent>()

最佳答案

如果只是一个容器,可以使用星型投影:

class MyContainer<T: TBase<T,*>>

这将使val msg = MyContainer<MyEvent>()工作。当您无论如何都使用反射来处理对象时,这种技术有时很有用,就像 Protobuf 和 Thrift 的情况一样。

但是您的问题并未提示您计划如何使用此容器。

关于java - Thrift 类型作为通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57530431/

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