当前位置: 首页 > 面试题库 >

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

聂华翰
2023-03-14
问题内容

在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生成便捷源代码。


问题答案:

我的问题是:为什么不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#通过在函数的声明
调用时都指定关键字来使您更清楚。在没有这种语法帮助的情况下,我将避免“模拟”输入/输出参数。



 类似资料:
  • postgresql 11中有一个存储过程: 它工作得很完美,但我无法从java代码中调用它:-( 我有postgresql 11和java 8我试过两个postgres jdbc驱动org.postgresql: postgresql: 42.2.5和postgresql: postgresql:9.1-901-1.jdbc4结果是一样的 当我使用 Java抛出:org.postgresql.u

  • 问题内容: 我正在开发一个项目,该项目正在创建一个类来运行http客户端请求(我的类充当客户端)。它接受一个url和一个请求方法(GET,POST,PUT等),我希望能够解析该URL并根据它是https还是http打开HttpsURLConnection或HttpURLConnection(假定给定的url始终是正确)。 如果我执行以下操作: 然后,这将自动创建一个可以同时接受http和https

  • 问题内容: 有什么方法可以创建 查询参数 以在JavaScript中执行 GET请求 吗? 就像在Python中一样,它具有一个字典(或两个元组的列表)并创建一个类似的字符串。 问题答案: 干得好: 用法:

  • 问题内容: 在PHP手册中,为了显示具有可选参数的函数的语法,它们在每组相关的可选参数周围使用方括号。例如,对于该功能,手册内容如下: 哪里是可选参数,当留空时,默认为函数的返回值。 在PHP中定义自定义函数时,如何创建像这样的可选参数? 问题答案: 与手册非常相似,在参数的定义中使用等号():

  • 所以lv在“v”或“v”后面会有一个“_”,在那之后会有一个整数,比如“_v1”,“_v2”,所以在结尾会是一个整数,但不是任何整数,它应该是整数a。谢谢!

  • 问题内容: 我正在尝试将oracle过程调用的out参数强制转换为对象。它不起作用,因为-就我所知- 我需要定义一个映射,告诉该方法如何投射它。如果地图是空的或未正确填充,则默认为STRUCT类型的Objekt-在我的情况下这是错误的。 我建立了一个示例,该示例应说明该问题: 由于地图错误,我无法使用以下方式: 我应该如何填写地图? 编辑1 oracle数据库中的条目无法更改。我只被允许使用它们。