pechkin: (Default)
pechkin ([personal profile] pechkin) wrote2004-02-10 12:50 am

(no subject)

09.02.2004 21:48
Оказывается, такая фишка работает:

protected final LinkedList lstRoot;

<…>

public FileSystemFile(Site _site)
{
super(_site);
root=(String)(site.getParameters().get(ParameterNames.ROOT));
lstRoot=parsePath(root);
}

<…>

public void getListRecursive(DirectoryData dir, InfoComparator comparator)
{
LinkedList absPath=lstRoot;
absPath.addAll(dir.getPath());
<…>
System.out.println ("lstRoot="+lstRoot); //Угадайте, что в нем теперь?
}

То есть, конечно, настоящий программист уже давно догадался, что к чему и почему. А я дурной и необразованный думал, что если final, то изменить нельзя, компилятор заругается, а то и в рантайме хряснется.

Не хряснулось.

На С есть способ защитить от изменения указатель и/или указываемое. В жабе же не указатели (מצביעים), но ссылки (מכוונים). Референсы, значит. "То есть, тем более же!" -- думал я, но ошибался.

[identity profile] duke-of-liss.livejournal.com 2004-02-12 10:40 am (UTC)(link)
Да ладно, имхо нигде нельзя чувствовать себя защищенно. Вплоть до того, что можно вручную указать смещение в сегменте данных и заменить что угодно. Будь ты хоть final, хоть const и т.д.