Приведение не создаст новый объект, оно просто скажет компилятору: «Эй, я знаю, что я делаю, и это DataObject
».
Не зная типа фактическогоList
реализации, мы не можем сказать, является ли то, что вы получаете, одним и тем же объектом.Если вы используете одну из коллекций Java Collections (ArrayList, LinkedList и т. Д.), То это будет тот же экземпляр объекта.Но я мог бы представить реализацию (сделанную мной, конечно!), Которая могла бы возвращать копии, а не базовый экземпляр.
public class MyList<T> implements List<T> {
private List<T> backingList = new ArrayList<T>();
//methods to fulfil List interface contract...
@Override
public T get(int index) {
T t = backingList.get(index);
return makeCopy(t);
}
private T makeCopy(T t) {
//make a copy of t!
}
}
И именно из-за этого мы не можем сказать (без того, чтобы вы сказали намбазовый тип), если метод get(int)
вернет копию или нет.