Java = Return Object list/array vs. Result-Object(与方法参数相同)

标签 java oop

这似乎是一个奇怪的问题:我正在努力确定在非常精细的级别上使用“类型化对象”是否是一种好的做法和“有效”。

public Object[] doSomething() {
    Object[] resultList = new Object[] {new Foo(), new Bar()};
    return resultList;
}

对比

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

public class Result{
    Foo foo;
    Bar bar;
}

我的问题具体如下:

  1. 就 CPU 周期而言(作为一个相对数字),第二种方法消耗的资源多多少。 (喜欢 100% 以上)

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

NB(这两个是多加理解的问题,不是过早优化)

  1. 在“良好设计实践”方面。你认为版本 1 是绝对禁止的,还是你认为它实际上无关紧要......或者你会建议永远不要返回“对象数组”((​​(在面向对象的编程语言中)))...

这很重要,我一直在想我是否应该为所有东西创建专用对象(用于传递值)或者我应该使用通用对象(和通用方法参数......)

这个问题也适用于

public doSomething(Query query ) 

对比

public doSomething(Foo foo, Bar bar, Aaaa, a, Bbbbb)

谢谢

马库斯

最佳答案

3.) In terms of "good design pratice". Do you think version 1 is an absolute No-Go or do you rather think it actually does not matter...Or would you propose never returnung "object Arrays" (((in an object oriented programming langauge/regarding encapsulation ...)))...

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

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

关于Java = Return Object list/array vs. Result-Object(与方法参数相同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253639/

相关文章:

python - 类型错误 : It would appear that nargs is set to conflict with the composite type arity

java - 编译 : wrong version 50. 0 时出现异常,应为 49.0

java - Liferay+ Spring : @ModelAttribute in render method with url parameters

java - 如何使Java程序的多个实例共享同一个日志记录FileHandler?

c# - 调用其他代码是否违反(SOLID)单一责任原则(SRP)?

oop - 在 View 模型之间传递状态

javascript - 使用 TypeScript super()

java - 一种迷宫生成方法的简单实现(随机DFS)

java - 多次打开文件时 Lucene 内存不足

OOP 与面向类编程