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构造函数中。
我该怎么做呢?
我之前在持久性框架开发中遇到过这个问题。您必须将所需的类传递到静态方法中。
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)
这显然不是生产质量的代码,但基本思想是我过去是如何实现这一点的。我可能对语法工作有一些小细节困惑,<>但这就是我为当前项目解决这个问题的方法。
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |