在Java中,如何从接口中获取实现接口的类?

tus*_*omi 1 java reflection interface

我有这个界面

public interface Deserializable{
    static <T> T deserialize(byte[] bytes) {
        ReflectionDeserializer rd = new ReflectionDeserializer();
        return rd.Deserialize(bytes);
    }
}
Run Code Online (Sandbox Code Playgroud)

存在一个问题,ReflectionDeserializer 在其构造函数中需要一个类实例。在这种情况下,我想要传入的类是该implements语句所在的类的类,因此如果我有 public class Cat implements Deserializable,我希望将接口放入Cat.class构造函数中。

我该怎么做呢?

cor*_*iKa 5

我之前在持久性框架开发中遇到过这个问题。您必须将所需的类传递到静态方法中。

static <T extends Deserializable> T deserialize(byte[] bytes, Class<T> targetType) {
    ReflectionDeserializer rd = new ReflectionDeserializer();
    return rd.Deserialize(bytes, targetType);
}
Run Code Online (Sandbox Code Playgroud)

那么你的 RefDes 将会有这样的东西

    public <T extends Deserializable> T deserialize(byte[] bytes, Class<T> targetType) {
        T target = targetType.newInstance();
        populateFromBytes(target, bytes);
        return target;
}
Run Code Online (Sandbox Code Playgroud)

这显然不是生产质量的代码,但基本思想是我过去是如何实现这一点的。我可能对语法工作有一些小细节困惑,<>但这就是我为当前项目解决这个问题的方法。