Vinnaren i pepparkakshustävlingen!
2020-01-14, 15:47
  #1
Medlem
Hej,

I kursen jag går f.n. så är det ett krav att man inte skall returnera arrayer eller arraylists i publika metoder. Är detta något generellt krav inom Java eller något som kursledaren hittat på?

Det är inget som tagits upp vid tidigare kurser, å andra sidan är det inget som behövts heller. Men i detta fall så hade det varit smidigt.
Citera
2020-01-14, 16:00
  #2
Medlem
Citat:
Ursprungligen postat av PatricHbg
Hur vore det att fråga administrationen
Inväntar svar därifrån med, men tänkte om någon här hade koll på saken då det inte är något jag hört talas om tidigare.

Skadar sällan att fråga på fler ställen.
Citera
2020-01-14, 16:02
  #3
Medlem
askers avatar
Det kan var schysst kodningspraxis att inte returnera lokala listor i anrop till publika funktioner, eftersom att anroparen då är helt fri att redigera i den underliggande listan. Däremot borde inte din kurshandledare ha några problem med att du gör en kopia av arrayen eller listan och returnerar denna.
Citera
2020-01-14, 17:10
  #4
Medlem
kodsnickrarns avatar
Kanske de anser att du istället borde returnera ett lämpligt interface, t.e.x Collection<> eller Iterable<> för att inte exponera implementationsdetaljer i onödan?
Citera
2020-01-17, 16:27
  #5
Moderator
Protons avatar
Citat:
Ursprungligen postat av Zzarox
Hej,

I kursen jag går f.n. så är det ett krav att man inte skall returnera arrayer eller arraylists i publika metoder. Är detta något generellt krav inom Java eller något som kursledaren hittat på?

Det är inget som tagits upp vid tidigare kurser, å andra sidan är det inget som behövts heller. Men i detta fall så hade det varit smidigt.
Kollar du igenom Java-APIet kommer du hitta ett flertal metoder i ett flertal klasser som returnerar både arrayer och i förekommande fall listor (eller möjligen ett list-interface), så det är knappast ett generellt krav utan snarare ett krav från kursledaren.

Kolla på exempelvis https://docs.oracle.com/javase/8/doc...ResultSet.html hur Interfacet ResultSet är gjort, där finns metoden getBytes deklarerad som returnerar en bytearray.

Beträffande listor verkar det som om man return erar ett typat listinterface från de metoder jag kollat nu (i java 8, exempelvis en JList har metoden getSelectedValuesList som returnerar ett listinterface, metoden getSelectedValues returnerar däremot en Object-array.
__________________
Senast redigerad av Proton 2020-01-17 kl. 16:38.
Citera
2020-01-17, 16:58
  #6
Medlem
Citat:
Ursprungligen postat av Zzarox
Hej,

I kursen jag går f.n. så är det ett krav att man inte skall returnera arrayer eller arraylists i publika metoder. Är detta något generellt krav inom Java eller något som kursledaren hittat på?

Det är inget som tagits upp vid tidigare kurser, å andra sidan är det inget som behövts heller. Men i detta fall så hade det varit smidigt.
Be kursledaren att motivera varför man inte ska returnera arrayer eller arraylists i publika metoder.
Vad ska man returnera istället om man faktiskt har en ArrayList? Menar han kanske att man ska skriva egna implementationer.

Precis som kodsnickrarn är inne på så är det lämpligare att returnera ett lämpligt interface. Istället för ArrayList så returnerar man List eller Collection. På det sättet döljer man implemenationen och kan utan större ingrepp byta ut den. Dock returnerar man så klart en konkret implementation av List-interfacet när man returnerar något.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback