[Java lista] referencia
Böszörményi Péter
zmblevlist at gmail.com
2010. Május. 6., Cs, 15:46:32 CEST
Valaszd szet a kodot. Legyen egy processX fv, ami Stringet var parameterul, az megcsinalja a fileos mokat. Legyen tovabba egy processX fv, ami parameterul egy byte tombot kap, es egy byte tombot ad vissza. Az belul szepen megcsinalja a mokat, es visszaadja az eredmeny byte tombot.
On Thu, 06 May 2010 15:42:16 +0200, Laja <laja at freemail.hu> wrote:
> Hi!
>
> Újabb érdekes problémám van. Hogyen lehet valahogy kikényszeríteni, hogy
> egy értékadás cím (referencia, pointer) szerint történjen? Írok egy
> példát, hogy érthető legyen:
>
> Van egy függvény, ami paraméterként kap egy PDF állományt, amit aztán
> módosít. Az állományt kaphatja memóriában (byte tömbként), vagy az
> állománynevet (azért a kavarás, hogy legyen is némi értelme a példának).
>
> private void processX(Object pdf){
> try{
> //beolvassuk az állományt
> PDDocument pdd=null;
> if(pdf instanceof String){ //állománynév van megadva
> pdd=PDDocument.load((String)pdf);
> }else{ //byte[] van megadva
> ByteArrayInputStream is=new ByteArrayInputStream((byte[])pdf);
> pdd=PDDocument.load(is);
> is.close();
> }
>
> //mindenfélét csinálunk a pdd-vel
>
> //eredményt kiírjuk
> if(pdf instanceof String){ //állománynév van megadva
> pdd.save((String)pdf);
> }else{ //byte[] van megadva
> ByteArrayOutputStream os=new ByteArrayOutputStream();
> pdd.save(os);
> pdf=os.toByteArray();
> os.close();
> }
>
> pdd.close();
> }catch(java.lang.Exception exc){
> System.err.println("ERROR exc="+exc);
> }
> }
>
> A fileneves résszel nincs is gond, de a tömbössel igen. Ugyanis a
> 'pdf=os.toByteArray();' értékadás során egy új lokális pdf jön létre,
> ami nyilván nem jó, mert így elvesznek a módosítások. Az 'arraycopy' nem
> jó, mert az új tömb nagyobb is lehet. Hogy lehet megoldani, hogy az
> eredeti 'pdf'-et írjam felül??
>
> Kerülő megoldás, hogy a pdf-et belerakom egy Vector-ba, és azt adom át
> paraméterként (gondolom ez működik, mivel csak a Vector egy elemét írom
> felül, a Vector ugyanaz marad), de ha lehet ez nélkül szeretném megoldani.
>
> Laja
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
--
Üdvözlettel,
Böszörményi Péter
További információk a(z) Javalist levelezőlistáról