我有一个实现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();
}

07-25 21:45