如何在Java中创建IN OUT或OUT参数

问题描述

我的问题是:为什么不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生成便捷源代码。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”