我有两个接口(interface)的实现
EncryptionService
**ABCEncryptionServiceImpl**
encrypt(byte[] bytes)
decrypt(byte[] bytes)
**XYZEncryptionServiceImpl**
encrypt(List<String> strings)
decrypt(List<String> strings)
我不喜欢的是我必须:
在 ABCEncryptionServiceImpl
中为方法提供空实现:
encrypt(List<String> strings)
decrypt(List<String> strings)
在XYZEncryptionServiceImpl
中为方法提供空实现:
encrypt(byte[] bytes)
decrypt(byte[] bytes)
关于如何更好地处理这个问题(即使用泛型)有什么想法吗?
最佳答案
而不是使用采用特定类型的不同方法,例如 byte[]
和List<String>
,您可以在 EncryptionService
中声明泛型类型参数.
public interface EncryptionService<T>
{
public void encrypt(T obj);
public void decrypt(T obj);
}
实现类将类型参数定义为具体类型。这样,两个实现类都不需要提供对其未涵盖的类型进行加密/解密的实现。
public class ABCEncryptionServiceImpl implements EncryptionService<byte[]>
{
@Override
public void encrypt(byte[] obj) { /* implementation */ }
@Override
public void decrypt(byte[] obj) { /* implementation */ }
}
public class XYZEncryptionServiceImpl implements EncryptionService<List<String>>
{
@Override
public void encrypt(List<String> obj) { /* implementation */ }
@Override
public void decrypt(List<String> obj) { /* implementation */ }
}
关于java - Java 中的继承和泛型的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31599611/