无法通过接口了解方法的可见性



我正在使用开源库测试facebookapi功能https://code.google.com/archive/p/facebook-test-java-api/

现在我要做的是更改我的测试用户名。我深入研究了这个库的代码,发现了以下内容:

public interface FacebookTestUserAccount
{
 // irrelevant methods
    /**
     * Gives access to change settings for the test user.
     * @return An {@code AccountSettingsChanger} responsible for updating the account settings.
     */
    AccountSettingsChanger changeAccountSettings();
// irrelevant methods
}

现在我的测试是这样的:

@Test
    public void updateNameOfTestUser(){
        List<FacebookTestUserAccount> allTestUsers = store.getAllTestUsers();
        FacebookTestUserAccount facebookTestUserAccount = allTestUsers.get(0);
        facebookTestUserAccount.// here after dot I cant see method changeAccountSettings() 
    }

由于我的refence方法是接口的类型,并且该方法是在接口中定义的,所以我很难解决的问题是:

为什么我在测试类中看不到该方法

这是getALL((的代码;

 public List<FacebookTestUserAccount> getAllTestUsers() {
        init();
        String jsonResponse = get("/%s/accounts/test-users", applicationId);
        JSONObject accounts = parseJsonObject(jsonResponse);
        LinkedList<FacebookTestUserAccount> result = new LinkedList<FacebookTestUserAccount>();
        JSONArray jsonArray = (JSONArray) accounts.get("data");
        for (Object element : jsonArray) {
            JSONObject jsonUser = (JSONObject) element;
            result.add(buildFacebookAccount(jsonUser));
        }
        log.debug("* Found [{}] accounts on Facebook ", result.size());
        return result;
    }

我能想到你的问题的两个可能原因:

  1. 您的IDE无法加载自动完成建议。要检查这一点,只需在句点后写入changeAccountSettings(),然后尝试编译。(我怀疑这是你的问题,因为你的问题措辞像"为什么我看不到这个…?"(

  2. 您的代码库中有两个不同的FacebookTestUserAccount,并且您导入了错误的一个。

最新更新