【发布时间】:2021-01-12 12:41:33
【问题描述】:
我在编程方面有点缺乏经验,因此可能很愚蠢。 但是我在以下方法中遇到了问题:
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)。
这里有一些可能有用的代码 sn-ps:
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被定义为ReadableMap上的实例方法。这意味着要调用它,您需要在ReadableMap的instance 上调用它。在您的示例中,您将a作为参数。如果您拨打a.getOrThrow(i);会发生什么? (我的意思是,它不太可能抛出,因为您当时正在迭代keySet......但仍然......) -
没问题。如果它解决了您的问题,请随时投票并接受下面@Jems 的回答。它可能比评论版本更有用(我只是没有时间尝试运行您的代码以检查实际上是 问题)。
标签: java methods interface abstract defined