Problem ze zgodnością

0

Witam, potrzebuje skompilować program pod JDK 1.3 , ale w tej wersji nie rozpoznaje mi tego mechanizmu :
for (File xmlFile : xmls)
{
processFile(xmlFile, docBuilder, outputPath);
}

Jest jakaś prosta metoda jak to obejść ?

1

Bo w javie < 1.5 nie ma foreach. Musisz to napisać ręcznie, tzn wrzuc tam pętle while z hasNext() i next() i ręcnzym wołaniem iteratora.

1

for (File xmlFile : xmls)
Zależy czym jest xmls. Jeśli tablicą, to

for(int i=0;i<xmls.length;i++)
{
     File f = xmls[i];

Jeżeli kolekcją, to

for(int i=0;i<xmls.size();i++)
{
     File f = xmls.get(i);
1

Zalezy jaka kolekcja. Jesli nie taka co jest RandomAccess, to get(i) w petli moze byc strasznie czasochlonne, jak np. w przypadku LinkedList. W tym wypadku zdecydowanie rozwiazanie Shaloma.

0

ło matko z curką ....

0

Metoda hardkorowa. foreach w czasie kompilacji jest zamieniany na "zwykły" iterator. Można zatem spróbować zrobić świństwo i podmienić wersję klasy bezpośrednio w pliku class. Wersja klasy jest zapisana na ósmym bajcie w pliku. Warunkiem prawidłowego działania jest niewykorzystywanie w kodzie metod dodanych w późniejszych wersjach języka oraz konstrukcji typu adnotacje.

0

A nie bylo po drodze zadnych innych zmian w formacie pliku?
Dlaczego Ty zawsze jakies kosmiczne rozwiazania proponujesz. Bralbys sam pod uwage cos takiego co wlasnie zaproponowales? Czy przepisanie na iterator jest takie skomplikowane? Powiedz ze to byl zart?

0

@mućka w jednym miejscu jest OK. Można podmienić. W 100 już nie koniecznie. Zmiana formatu pomiędzy 1.3, a 1.5 nie polega na samej zmianie "layoutu" pliku co na wykorzystaniu wcześniej zarezerwowanych obszarów. Starsza wersja Javy po prostu zignoruje nieznane elementy nagłówka, a jeżeli coś w kodzie jest nie tak np. używasz metod z jdk 1.4+ to się w przewidywalny sposób wysypuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1