Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的抽象工厂模式和序列化_Java_Generics_Design Patterns_Interface - Fatal编程技术网

Java中的抽象工厂模式和序列化

Java中的抽象工厂模式和序列化,java,generics,design-patterns,interface,Java,Generics,Design Patterns,Interface,我有一个接口A: public interface A { ... } 我有一个工厂接口FA: public interface FA { public A create(); public A deserialize(String pathToFile); } 我想在某处序列化字符串pathToFile接口方法。问题来了。。。简单的解决方案是将它放在一个类中,但这是错误的,因为序列化和反序列化逻辑应该在同一个类中。但是我怎么把它放在FA里呢?使其通用似乎是一个错误的路

我有一个接口A:

public interface A {
   ...
}
我有一个工厂接口FA:

public interface FA { 
   public A create(); 
   public A deserialize(String pathToFile);
}

我想在某处序列化字符串pathToFile接口方法。问题来了。。。简单的解决方案是将它放在一个类中,但这是错误的,因为序列化和反序列化逻辑应该在同一个类中。但是我怎么把它放在FA里呢?使其通用似乎是一个错误的路径FA

是的,如果它在FA中。问题是FA的实现应该知道如何序列化正在传递的obj。为什么您认为添加类型参数是错误的?如果我理解正确的话,FA会创建、序列化和反序列化相同类型的对象。但是,如果您有一个名为A的接口,则建议为类型参数使用不同的名称,因为这样可以减少混淆类型的机会