Java默认方法-获取子类的类型

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 方法。这可能吗?

Bal*_*der 5

我相信您可能正在寻找像这样的接口声明:

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>>