在Java

时间:2016-01-11 14:17:37

标签: java arraylist methods

不幸的是,我的Java知识有点缺乏,所以这有点像初学者的问题,但我似乎无法弄清楚如何做到这一点。

基本上我有一个创建和填充ArrayList的方法。所述填充列表是我想要在不同的方法和可能的另一个类中使用的东西。我认为这是一个类级变量我想保存它,但我不知道如何做到这一点。下面的代码将使其更加清晰。

public class JenAcc {

private final String endpointUrl = "http://a-url/";  

private String uri = "api/json";

public static void main(String[] args) {

    JenAcc obj = new JenAcc();
    obj.jsonRun();

}

public void jsonRun() {

    ArrayList<String> abbrevList = new ArrayList<>();
    ArrayList<String> urlList = new ArrayList<>();

    try {
        RestServiceClient client = RestServiceClient.getClient(endpointUrl);
        Response response = client
                .path(uri)
                .accept(MediaType.APPLICATION_JSON)
                .get();

        String s = (String) response.getEntity();

        JobList jjj = JSONResponseHandler.mapJSONToResponse(s, JobList.class);

        for (int i = 0; i < jjj.getJobs().size(); i++) {
            if (jjj.getJobs().get(i).getName().contains("services"){
                abbrevList.add(jjj.getJobs().get(i).getName().replace("services", ""));
                urlList.add(jjj.getJobs().get(i).getUrl());

            } else i++;
        }

        System.out.println(abbrevList);
        System.out.println(urlList);

    } catch (Exception e) {
        e.printStackTrace();
    }
    }
}

所以基本上我希望有一种方法可以在该方法之外,在另一个方法或类中使用该列表。我该怎么做呢?

感谢您的耐心等待。

2 个答案:

答案 0 :(得分:3)

将列表声明为成员变量, &安培;定义访问者方法,以便从课堂外与他们联系:

public class JenAcc {
    private List<String> abbrevList = new ArrayList<>();
    private List<String> urlList = new ArrayList<>();

    ...

    public List<String> getAbbrevList() {
        return abbrevList;
    }

    public List<String> geturlList() {
        return urlList;
    }
}

&安培;从课堂外访问列表:

JenAcc jenacc = new JenAcc(); // initialization
List<String> urls = jenacc.geturlList(); // Use the accessor method defined above
// Same goes for the other list

答案 1 :(得分:2)

如果它应该是一个类级别的成员,那么只需在声明其他类级成员的地方声明它:

private final String endpointUrl = "http://a-url/";  
private String uri = "api/json";

ArrayList<String> abbrevList = new ArrayList<>();
ArrayList<String> urlList = new ArrayList<>();

(当然从方法中删除局部声明。)当然,这会影响这些值的范围。在对象的任何给定实例上多次运行该方法可能会产生意想不到的副作用,但这实际上取决于您需要对这些值执行的操作的逻辑。

此时,对象中的任何其他代码都将能够访问这些值。如果它们也需要被其他对象访问,请添加一个getter:

public ArrayList<String> getAbbrevList() {
    return this.abbrevList;
}

当然还有其他方法,这一切都取决于对象的行为方式,而不是方法的行为方式。例如,也许它不应该是一个类级别的成员,而应该通过该方法返回?这是您正在构建的系统的语义问题。像“JenAcc”和“jsonRun”这样的名字并没有真正传达那些语义。