Java =返回对象列表/数组与结果对象(与方法参数相同)

Mar*_*kus 3 java oop

这似乎是一个奇怪的问题:我正在努力决定在一个非常精细的层面上使用"类型对象"这是一个好的做法和"高效".

public Object[] doSomething() {
    Object[] resultList = new Object[] {new Foo(), new Bar()};
    return resultList;
}
Run Code Online (Sandbox Code Playgroud)

public Result doSomething() {
    Result result = new Result();
    result.foo = new Foo();
    result.bar = new Bar();
    return result;
}

public class Result{
    Foo foo;
    Bar bar;
}
Run Code Online (Sandbox Code Playgroud)

我的问题具体如下:

  1. 就CPU周期而言(作为相对数字),第二种方法消耗更多资源的程度.(比如100%以上)

  2. 关于内存消耗的相同问题

NB(这两个问题需要更多地了解,不是过早优化)

  1. 在"良好的设计实践"方面.你认为版本1是绝对的No-Go还是你认为它实际上并不重要...或者你会建议永远不会返回"对象阵列"(((在面向对象的编程语言中)))...

这是一件事,我总是想知道我是否应该为所有东西创建专用对象(用于传递值)或者我应该使用通用对象(和常用方法参数......)

这个问题也适用于

public doSomething(Query query ) 
Run Code Online (Sandbox Code Playgroud)

public doSomething(Foo foo, Bar bar, Aaaa, a, Bbbbb)
Run Code Online (Sandbox Code Playgroud)

谢谢

马库斯

Mat*_*all 6

3.)在"良好的设计实践"方面.你认为版本1是绝对的No-Go还是你认为它实际上并不重要...或者你会建议永远不会返回"对象阵列"(((在一个面向对象的编程语言/关于封装......) ))...

版本1 绝对不行.它几乎完全没有类型.调用者必须知道实际类型以及它们在数组中的位置,并进行适当的转换.您丢失了任何有用的编译时类型检查,并且代码本身明显不太清楚.

我永远不会返回,Object[]除非它包含的值是用它构造的new Object().