Tag: 参数

Java方法参数是否应该用于返回多个值?

由于发送到Java中的方法的参数指向调用方法中的原始数据结构,因此设计者是否打算将它们用于返回多个值,这是其他语言(例如C)的常规吗? 或者这是对Java的一般属性的危险误用,变量是指针吗?

如何将参数注入TestNG类的构造函数?

我已经实现了一个带有策略模式的程序。 所以我有一个在某些地方使用的接口,可以替换具体的实现。 现在我想测试这个程序。 我想以类似的方式做到这一点。 编写一次测试,测试接口。 应在测试开始时注入具体的接口实现,以便我可以轻松替换它。 我的testclass看起来类似于这个: public class MyTestClass { private StrategeyInterface strategy; public MyTestClass(StrategeyInterface strategy) { this.strategy = strategy; } ….test methods using the strategy. } 参数化的构造函数必须用于在测试开始时注入具体的策略实现。 现在我没有让TestNG运行它并注入具体的实现实例。 我尝试了几种inheritance方式, @DataProvider , @DataProvider和相应的方法,但没有运气。 以下是testNG报告所说的内容: Can’t invoke public void MyClass.myTestMethod(): either make it static or add a no-args constructor to your class 我使用maven surefire插件来运行测试。 这是pom.xml的相关部分: […]

如何返回数组的特定元素?

我想返回奇数个数组,但Eclipse似乎不接受我的返回array[i]; 码。 我认为它需要返回一个完整的数组,因为我将一个数组设置为我的方法的参数。 正如我之前所说,我需要传递一个数组并获得该数组的特定元素作为回报。 即使我将该数组设为静态,如何返回单个元素? 编辑:好的,这里是: public class newClass{ public static void main(String[] args) { int [] newArray= new int [4]; int [] array = {4,5,6,7}; newArray[0] = array[0]+array[1]+array[2]+array[3]; newArray[1] = array[0]*array[1]*array[2]*array[3]; newArray[2] = findOut(array); } public static int findOut (int [] array3) { int e1=0; int e2=0; for (int i=0; i<array3.length; i++) { if […]

从Java中的查询字符串中提取参数及其值

所以我想假设我有一个字符串 “param1=value1&param2={“url”:”http://somesite.com?someparam=somevalue&someparam1=somevalue1″}&param3=value3″ 我需要它: param1: value1 param2: {“url”:”http://somesite.com?someparam=somevalue&someparam1=somevalue1″} param3: value3 在Java中解析这个问题的最佳方法是什么? 到目前为止,我找不到标准Java库的解决方案,我不想重新发明轮子。 我已经尝试过了(但如果我只在那里放置查询参数,那就不行了): String url = “http://www.example.com/something.html?one=11111&two=22222&three=33333”; List params = URLEncodedUtils.parse(new URI(url), “UTF-8″); for (NameValuePair param : params) { System.out.println(param.getName() + ” : ” + param.getValue()); }

Java为参数分配新值,这被认为是一种不好的做法吗?

我在这里已经阅读了这个问题: 为方法参数赋值是否有问题? 。 然而,我不清楚是否做了类似的事情: public void myMethod(Object obj) { doSomething(obj); obj = getNewObj(); } 要么: public void anotherMethod(Object obj) { obj = doSomething(obj): } 这基本上只是为了避免声明一个新的局部变量,这值得吗?,这被视为一种不好的做法吗?

迭代方法参数

这是一个简单而且微不足道的问题:在Java中如何迭代传递给我正在工作的方法的参数? 我需要它trim()所有字符串。 编辑 更准确地说,一个使用的例子可以是这个(用伪代码编写,反映我希望它如何工作): public void methodName(String arg1, int arg2, int arg3, String arg4, double arg5) for(Object obj : getThisMethod().getParameters() ) System.out.println(obj.getName() + ” = ” + obj.toString()) 重点是getThisMethod().getParameters() 。 我该在那个地方写什么?

使用JDBC将SYS_REFCURSOR作为IN参数调用PL / SQL过程

我试图理解如何调用PL / SQL过程,该过程将SYS_REFCURSOR作为IN参数。 请考虑以下PL / SQL过程: print_cursor_contents(myCursor SYS_REFCURSOR , row_count OUT NUMBER); 在将值绑定到IN参数时,我使用setXXX方法? 给我一个带有单独游标记录字段的java类,因为它的成员和这个类的实例数组似乎是表示plsql CURSOR的正确方法。 当我这样做时,我得到一个SQLException: 我使用了以下set方法 callStmt.setObject(1, curRec); 以下是使用上述语句时的例外情况: Exception occured in the database Exception message: Invalid column type java.sql.SQLException: Invalid column type at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8921) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8396) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:9176) at oracle.jdbc.driver.OracleCallableStatement.setObject(OracleCallableStatement.java:5024) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:234) at com.rolta.HrManager.printMaxSalAllDept(HrManager.java:1022) at com.rolta.HrManager.main(HrManager.java:1116) Database error code: 17004

如何使用JNLP将命令行参数传递给应用程序?

我的应用程序有一个JNLP包。 现在我需要将命令行参数传递给我的应用程序。 如何扩展我的JNLP文件以列出命令行参数? 例如,我需要说java main.class arg1 arg2和arg1和arg2需要作为JNLP文件的一部分提到。

参数化方法调用何时有用?

Java方法调用可以参数化,如下面的代码所示: class Test { void test() { } public static void main(String[] args) { new Test().test(); // ^^^^^^^^ } } 我发现这可以从Eclipse Java Formatter设置对话框中找到,并且想知道是否存在任何有用或必需的情况。 编辑 根据Arne的优秀答案,我得出以下结论: 除了改进类型安全性之外,Arne的示例说明了参数化方法调用使您能够指定应该是容器元素类型的方法参数的公共基本类型。 此类型通常由编译器自动推断为最具体的公共基类型。 通过参数化方法调用,可以覆盖此行为。 如果编译器推断出多种常见类型,则可能需要参数化方法调用。 以下示例演示了该行为: import java.util.Arrays; import java.util.List; class Test { public static void main(String[] args) { Integer a=new Integer(0); Long b=new Long(0); List listError=Arrays.asList(a, b); //error because Number&Comparable […]

如何通过Java中的reflection获取方法参数的值?

考虑以下代码: public void example(String s, int i, @Foo Bar bar) { /* … */ } 我对用@Foo注释的参数的值感兴趣。 假设我已经通过reflection(使用Method#getParameterAnnotations() )找出了哪个方法参数具有@Foo注释。 (我知道它是参数列表的第三个参数。) 我现在如何检索bar的值以供进一步使用?