在一次调用中返回所有实例一个变量

时间:2016-12-02 10:08:22

标签: java

我有这个类作为容器,我将使用实例变量进行处理

class Data{
    static int counter= 0;
    boolean boolean1;
    String string1;

    public Data() {
        counter++;
    }
}

我有这个设置Data

值的方法
public Data setData()
{
    Data data = null;
    for (int i = 0; i < somecoutnerhere; i++) {

        Data = new Data();
        Data.boolean1 = some boolean put here;
        Data.string1 = "some string to be put here";
    }

    return ProcessData(Data);
}

我也有这个类ProcessData,它将使用Data并构建响应

private class ProcessData
{        
    private final Map<String, List<?>> map = new HashMap<String, List<?>>();
    int counter;

    public ProcessData(Data data)   
    {
        map.put("boolean1", data.boolean1);
        map.put("String1", data.string1);
        counter = data.counter;
    }

     public String someMethodToGenerateReturnData(){
     // some code here to make use of the Data collected. Will basically use map to construct the return String
     }
 }

我的问题是我无法弄清楚如何在setData()上返回for-loop for for data上创建的所有实例变量。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

我的问题是我无法弄清楚如何在setData()上返回for-loop for for data上创建的所有实例变量。有什么想法吗?

根据这个,你的问题不是&#34;在一个调用中返回所有实例一个变量&#34;,如标题所述,而是关于如何返回所有symget的问题 - 在你的for中创建的对象-loop,这比较容易。

你的代码是错误的,所以我继续前进&amp;纠正了它(我希望我没有搞砸)。我还重命了一些东西。

我所做的改变是:

  • 重命名&#34; boolean1&#34;和&#34; string1&#34; to&#34; trueOrFalse&#34;和&#34;字符串&#34;
  • Data - 类
  • 中添加了一个公开的,完全参数化的构造函数
  • Data - 方法中添加ProcessData - 列表,该方法填入setData() - 循环 (+评论)

但是,我强烈建议您检查一下您的体系结构,并了解一般的命名约定或编码约定。名称应指出方法/变量/类的目的或内容,以及&#34; boolean1&#34;并非如此。

关于体系结构:for - 类似乎仅存在于计数器中,您可以轻松地更改它,使Data - 类过时(除非它在其他地方使用) )。

数据类:

Data

<强> class Data { static int counter = 0; boolean trueOrFalse; String string; public Data() { counter++; } public Data(boolean someBoolean, String someString) { this.trueOrFalse= someBoolean; this.string = someString; counter++; } } - 方法

setData()

<强> public List<ProcessData> setData() { List<ProcessData> processedDataList = new ArrayList<ProcessData>(); for (int i = 0; i < someCounterHere; i++) { processedDataList.add(new ProcessData(new Data(true, "testString")); // a new Data-object is created (parameters true and "testString") // a new ProcessData-object is created (parameter is the newly created Data-Object) // the newly created ProcessData-object is added to the list } return processedDataList; } - 等级:

ProcessData