[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