2015-12-31 1 views
-1

Я делаю буфер, который принимает простой объект с некоторыми переменными.как передать значение путем копирования в java

Я хочу скопировать объект внутри функции и взять его как копию, но Java, похоже, передается как ссылка.

Все мои поисковые запросы google приходят к людям, задающим разницу между копией и ссылкой, но не обнаружили ничего, что связано с моим вопросом.

class Key 
{ 
    enum key {up, down, left, right} 
    key k; 
    int timelastpressed; 
} 

class Input 
{ 
Key.key key; 
public void Update() 
{ 
key = TakeInput(); 
buffer.AddKey(key); // This pass me by reference, so the buffer only have one key and it updates this key instead of adding new ones 
} 

public Key TakeInput() 
{ 
    return GetKey(); 
} 
} 

class Buffer() 
{ 
List<Keys> key; 

public void AddKey(Key key) 
{ 
key.add(key); 
} 
} 
+0

Вы должны знать, как скопировать объект. Код или другие особенности необходимо сказать больше. – chrylis

+0

Можете ли вы показать нам фактический код, о котором вы спрашиваете? –

+0

Java всегда проходит по значению - всегда. Для ссылочных типов передаваемая вещь является ссылкой на объект, который живет в куче. – duffymo

ответ

-1

Как следует из некоторых замечаний, решение заключается в том, чтобы аргумент передал временную переменную в функции обновления.

много спасибо.

Смежные вопросы