问题描述
我在编程方面有点缺乏经验,因此可能很愚蠢。 但是我在以下方法中遇到了问题:
import java.util.Set;
public class Launcher
{
public static void printEntries(ReadableMap<String,Integer> a)
{
Set<String> b = a.keysAsSet();
try
{
for(String i : b)
{
if(i != null)
{
getorThrow(i);
}
System.out.println(i + ": " + getorThrow(i));
}
}
catch(UnkNownKeyException z)
{
throw new UnkNownKeyException();
System.out.println("Eine UnkNownKeyException ist aufgetreten.");
}
}
}
未定义 Launcher 类型的 getorThrow(String) 方法。
以下是一些可能有用的代码片段:
public interface ReadableMap<K,V> {
public abstract V getorThrow(K key) throws UnkNownKeyException;
}
和
public abstract class AbstractReadableMap<K,V> implements ReadableMap<K,V>
{
protected Entry<K,V>[] entries;
public V getorThrow(K k) throws UnkNownKeyException
{
for(Entry<K,V> i : entries)
{
if(i.getValue() != null && i.getKey().equals(k))
{
return i.getValue();
}
}
throw new UnkNownKeyException();
}
}
这是为什么,我该如何解决?
我非常感谢任何形式的帮助。 提前致谢!
解决方法
此处对 getOrThrow(i)
的调用是隐式 Launcher.getOrThrow(i)
- 换句话说,它正在调用属于类 Launcher 的方法。您可能希望改为调用 a.getOrThrow(i)
,因为 a
是实现该方法 ReadableMap
的类型。