我有一个实现UserEntity
接口的IUserEntity
类。
在UserEntity
类中,我有一个静态映射:
private static Map<IUserEntity.IIdentifiable, IUserEntity> staticUserEntityMap = new HashMap<>();
在
IUserEntity
界面中,我想编写一个类似的方法:public Collection<IUserEntity> getUsers();
在课堂上:
public static Collection<IUserEntity> getUsers(){
return staticUserEntityMap.values();
}
但是我无法在接口中声明静态方法,也无法更改
UserEntity
类中的方法签名。我怎样才能做到这一点 ?
最佳答案
在Java 8中,您可以在界面中使用默认的实现,但是我相信这不会解决您的问题。无需更改方法签名,您可以创建一个单独的静态方法,并在getUsers实现中使用类名对其进行调用。例如
创建新方法:
public static Collection<IUserEntity> getUsersStatic() {
return staticUserEntityMap.values();
}
从
getUsers
调用此方法:public Collection<IUserEntity> getUsers() {
return UserEntity.getUsersStatic();
}