(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, то изменить нельзя, компилятор заругается, а то и в рантайме хряснется.
Не хряснулось.
На С есть способ защитить от изменения указатель и/или указываемое. В жабе же не указатели (מצביעים), но ссылки (מכוונים). Референсы, значит. "То есть, тем более же!" -- думал я, но ошибался.
Оказывается, такая фишка работает:
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, то изменить нельзя, компилятор заругается, а то и в рантайме хряснется.
Не хряснулось.
На С есть способ защитить от изменения указатель и/или указываемое. В жабе же не указатели (מצביעים), но ссылки (מכוונים). Референсы, значит. "То есть, тем более же!" -- думал я, но ошибался.
no subject