Java 将参数设置为持久值

Java 将参数设置为持久值,java,null,static-methods,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 setNullValuesBla

我已经读过一点,我理解在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 = "";
    }
  }
}
其产出如下:

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

您需要分配给阵列:

if (checkNull[i] == null) {
  checkNull[i] = "";
}
分配给检查不会更改数组。

公共静态无效setNullValuesBlank(字符串…checkNull)
public static void setNullValuesBlank(String... checkNull)
{
    for(int i = 0; i < checkNull.length; i++) if(checkNull[i] == null) checkNull[i] = "";
}
{ 对于(int i=0;i
您必须将值保存到数组中:

if (checkNull[i] == null) {
  checkNull[i] = "";
}
导入java.util.array;
公共类空值检查{
公共静态void main(最终字符串[]args){
最后一个字符串[]sa={null,null};
System.out.println(Arrays.toString(sa));
支票(sa);
System.out.println(Arrays.toString(sa));
}
专用静态无效检查(最终字符串…a){
for(int i=0;i
有没有办法让我不必首先构造数组?有没有办法让我不必首先构造数组?您需要构造它,因为在正常的var args中,您遇到了与原始场景相同的问题,由于使用参数中的对象的数组是为方法调用构造的。我不完全确定我是否理解您的意思,我也不明白为什么它不起作用,但我认为您是对的,不幸的是…+1 for
使用参数中的对象的数组是为方法调用
.Java(和其他许多语言一样)是按值传递,而不是按引用传递,因此,虽然您可以使用传递给方法的对象,但您无法将新对象分配给这些参数。有没有办法让我不必首先构造数组?@kentcdoff是的,将每个字符串作为参数传递,即
setNullValuesBlank(str1、str2、str3)@kentcd,嗯,没料到。
if (checkNull[i] == null) {
  checkNull[i] = "";
}
public static void setNullValuesBlank(String... checkNull)
{
    for(int i = 0; i < checkNull.length; i++) if(checkNull[i] == null) checkNull[i] = "";
}