问题描述
我的问题是:为什么不method
退货 ?而不是设置输入/输出参数?
但是假设您 绝对肯定 要有一个in / out参数,这是一个完全不同的问题,那么数组技巧就可以了。另外,它也不少笨拙,但另一种方法是传入对象引用:
public class Foo {
private String value;
public Foo(String v) {
this.value = v;
}
public String getValue() {
return this.value;
}
public void setValue(String v) {
this.value = v;
}
}
// ....
public void method(String in, Foo inOut) {
inOut.setValue(in);
}
(或者,当然,只是value
公开。)看到了吗?我说这还不算笨。
但是我会再问:不能method
退货吗?而且,如果需要返回多个事物,是否不能返回具有这些事物属性的对象实例?
这是我真正喜欢C#方法的领域之一。反对输入/输出参数的参数之一是,在 调用 函数时它们不清楚。因此,C#通过在函数的声明 和 调用时都指定关键字来使您更清楚。在没有这种语法帮助的情况下,我将避免“模拟”输入/输出参数。
解决方法
在PL / SQL(或许多其他语言)中,我可以具有从过程返回的IN OUT或OUT参数。如何在Java中实现类似的目的?
我知道这个窍门:
public void method(String in,String[] inOut,String[] inOut2) {
inOut[0] = in;
}
其中in
参数表示IN参数,并且inOut
参数可以包含返回值。约定String[] inOut
是的数组inOut.length == 1
。
有点笨拙。
编辑对答案的反馈 :其他技巧包括:
- 持有人/包装师类,但我不想介绍任何新类型,回调等。
- 返回值:我想要一个 通用的 解决方案。即一个涉及多个IN OUT参数。
- IN OUT参数的包装器作为返回值:这是一个可行的选择,但仍然不是很好,因为必须以某种方式生成该包装器
有谁知道实现这一目标的更好方法?我需要通用解决方案的原因是因为我想在数据库模式中从PL / SQL生成便捷源代码。