Jos*_*oon 6 java generics default-method
我有一个接口,我想在其中提供默认方法来序列化继承的类。我使用一个JsonSerializer<T>类来进行序列化。
该方法如下所示:
public interface A
{
public default String write()
{
new JsonSerializer</*Inherited class type*/>();
// I've tried new JsonSerializer<this.getClass()>(); - Doesn't work
}
}
public class AX implements A
{
}
Run Code Online (Sandbox Code Playgroud)
所以当我实例化AX时,我想使用write方法来序列化AX
AX inst = new AX();
String instSerialized = inst.write();
Run Code Online (Sandbox Code Playgroud)
我需要将 AX 的类型传递给 A 中的 write 方法。这可能吗?
我相信您可能正在寻找像这样的接口声明:
public interface A<T extends A<T>>
{
public default String write()
{
new JsonSerializer<T>();
}
}
public class AX implements A<AX>
{
}
Run Code Online (Sandbox Code Playgroud)
当您需要将当前类作为泛型参数引用时,使用自边界泛型有时很有用。例如,这也是由 javaEnum类完成的:abstract class Enum<E extends Enum<E>>。