我的方法没有为类定义吗?

问题描述

我在编程方面有点缺乏经验,因此可能很愚蠢。 但是我在以下方法中遇到了问题:

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 的类型。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...