gpt4 book ai didi

Java - 泛化方法 - "Class"用于类型参数的实例

转载 作者:行者123 更新时间:2023-11-30 07:02:04 24 4
gpt4 key购买 nike

我有几个序列化不同类的方法,比方说 A、B 和 C。

它们看起来像这样(对于每个类):

public byte[] serializeData(A object) throws IOException {
...
FieldSerializer<?> serializer = new FieldSerializer<A>(kryo, A.class);
kryo.register(A.class, serializer);
...
}

我想以某种方式概括这些方法以避免代码重复。

首先,我考虑过参数化此方法,但由于类型删除,这行不通 - 我仍然需要“A.class”作为参数传递。

然后我考虑另外传递一个“Class”实例,以便它可以用作 FieldSerializer 的第二个参数并对方法进行参数化:

public <T> byte[] serializeData(T object, Class clazz) throws IOException{
...
FieldSerializer<?> serializer = new FieldSerializer<T>(kryo, clazz);
kryo.register(clazz, serializer);
...
}

但它看起来仍然不对。无论如何让它更整洁?理想情况下,我希望有一个参数化方法或传递 Class 实例。

最佳答案

你可以使用 Object.getClass() :

public byte[] serializeData(T object) throws IOException {
...
FieldSerializer<?> serializer = new FieldSerializer<T>(kryo, object.getClass());
kryo.register(object.getClass(), serializer);
...
}

关于Java - 泛化方法 - "Class"用于类型参数的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335475/

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