我是Java和Android的新手所以希望我的问题有意义(我想我知道我在问什么!)
我正在通过一本书中的示例工作,我有一个查询,其中包含以下声明:
String[] tags = savedSearches.getAll().keySet().toArray(new String[0]);
其中savedSearches是SharedPreferences对象。
savedSearches.getAll()
会返回一个允许调用KeySet()
的地图。我无法理解的是KeySet()
呼叫是如何可能的。我的印象是,如果你要在你的代码中使用类/接口,那么你需要导入它或导入一个类/接口直接或间接扩展/实现调用的对象,在这种情况下是一个引用到地图。
我正在处理的示例导入以下内容:
import java.util.Arrays;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
我看过Java和Android API,我看不到上面的任何一个地图是实现的(除非我错过了它!)所以原则上我不应该打个电话到KeySet()
。那么怎样才能调用KeySet()
?
希望以上内容会有所帮助:/任何有助于理解这一点的帮助或指示都会非常感激。
答案 0 :(得分:2)
keySet()
是一种返回Map(public Set<K> keySet ())
所有键的集合的方法。因此,不会导入方法。虽然未导入Map,但getAll()
方法的返回类型为Map<String, ?>
,因此可以直接访问。
如果您单独提取getAll()
,
Map<String, ?> map = preferences.getAll();
然后您将导入Map,否则您可以直接访问它。