将参数设置为持久值

时间:2012-04-04 10:06:31

标签: java null static-methods

我已经阅读了一下,我理解在java中你不能改变给定参数的原始值,并期望在方法结束后它们仍然存在。但我真的很想知道这样做的好方法。有人可以给我一些指示,说明我可以做些什么来使这个方法有效吗?感谢。

/**
* This will set values in the given array to be "" (or empty strings) if they are null values
*
* @param checkNull
*/
public static void setNullValuesBlank(String... checkNull) {
  for (int i = 0; i < checkNull.length; i++) {
    String check = checkNull[i];
    if (check == null) {
      check = "";
    }
  }
}

修改

所以我必须像几个人提到的那样将它设置为数组,如果我首先构造数组它会很好,但是如果我不这样做那么它就不起作用。

这是固定方法:

/**
  * This will set values in the given array to be "" (or empty strings) if they are null values
  *
  * @param checkNull
  */
public static void setNullValuesBlank(String... checkNull) {
  for (int i = 0; i < checkNull.length; i++) {
    if (checkNull[i] == null) {
      checkNull[i] = "";
    }
  }
}

这是一个有效的电话:

String s = null;
String a = null;
String[] arry = new String[]{s, a};
for (int i = 0; i < arry.length; i++) {
  System.out.println(i + ": " + arry[i]);
}
setNullValuesBlank(arry);
for (int i = 0; i < arry.length; i++) {
  System.out.println(i + ": " + arry[i]);
}

这是工作的电话,但我想要:

String q = null;
String x = null;
System.out.println("q: " + q);
System.out.println("x: " + x);
setNullValuesBlank(q, x);
System.out.println("q: " + q);
System.out.println("x: " + x);

输出:

q: null
x: null
q: null
x: null

3 个答案:

答案 0 :(得分:2)

您需要分配到数组:

if (checkNull[i] == null) {
  checkNull[i] = "";
}

分配给支票不会改变数组。

答案 1 :(得分:0)

public static void setNullValuesBlank(String... checkNull)
{
    for(int i = 0; i < checkNull.length; i++) if(checkNull[i] == null) checkNull[i] = "";
}

答案 2 :(得分:0)

您必须将值保存到数组中:

import java.util.Arrays;

public class NullCheck {

    public static void main( final String[] args ) {
        final String[] sa = { null, null };
        System.out.println( Arrays.toString( sa ) );
        check( sa );
        System.out.println( Arrays.toString( sa ) );
    }

    private static void check( final String... a ) {
        for ( int i = 0; i < a.length; i++ ) {
            if ( a[i] == null ) a[i] = "";
        }
    }

}