Рассмотрим следующие два класса (один из них Main
с методом main()
):
Класс VO:
public class TheVO {
private String[] theValues = null;
/**
*
*/
public TheVO(String[] theParam) {
this.theValues = theParam;
}
/**
*
* @return
*/
public String[] getValues(){
return this.theValues;
}
@Override
public String toString() {
StringBuffer buf = new StringBuffer("");
if(this.theValues == null){
return buf.toString();
}
for(String read:this.theValues){
buf.append(read);
buf.append(" ");
}
return buf.toString().trim();
}
}
Основной класс:
public class Main {
/**
*
*/
public Main() {
super();
}
/**
* @param args
*/
public static void main(String[] args) {
TheVO theV = new TheVO(new String[]{"Hello","World!!"});
String[] vale = theV.getValues();
vale[0] = "Goodbye";
System.out.println(theV);
}
}
Результат после выполнения:
Goodbye World !!
Вопрос:
Я знаю, что переменная массива vale
ссылается на ту же самую переменную, проанализированную в конструкторе, и если я изменю одну изиндексы в массиве он меняет так же String[]
в VO.
Как мне "исправить" или изменить класс TheVO так, чтобы мой результат был?:
Hello World !!