gpt4 book ai didi

java - 使用接口(interface)和枚举的潜在类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:26 25 4
gpt4 key购买 nike

我有一个 IDevice 接口(interface)和这个接口(interface)的两个枚举实现:AndroidDeviceIosDevice。问题是:我想使用潜在类型并在接口(interface)引用上调用 values() 方法:

private IDevice getDeviceByReadableName(String versionInXml, IDevice devices) {
for(IDevice device : devices.values()){
//...

所以我必须添加 public IDevice[] values(); 到我的界面:

public interface IDevice {
//...
public IDevice[] values();
}

但它不起作用。 Eclipse 要求我从 AndroidDevice(...) 中删除静态修饰符


请:

  1. 向我解释为什么它不起作用?
  2. 这个问题的最佳解决方案是什么,我应该改用反射吗?

最佳答案

它不起作用的原因是因为为每个枚举隐式定义了静态 values() 方法。

public enum IOS {

//Compiler raises an error that values() method is already defined.
public IOS[] values(){

}
}

因此,当您已经定义了静态方法时,您不能添加具有相同签名的新实例级方法。

修复它的最简单方法是使用不同的方法名称。

public interface IDevice {

IDevice[] allvalues();
}

public enum IOS implements IDevice{

IPHONE, IPAD;

@Override
public IDevice[] allvalues() {
//return array of iOS devices;
}
}

关于java - 使用接口(interface)和枚举的潜在类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com