[Java lista] referencia

Zsombor gzsombor at gmail.com
2010. Május. 6., Cs, 15:49:12 CEST


2010/5/6 Laja <laja at freemail.hu>

> 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
>


Ez elég rémisztő ötletnek tüník, sosem szabad elfelejteni, hogy a típusok a
barĂĄtaid, valamint a fĂźggvĂŠnynek lehet kimeneti ĂŠrtĂŠket megadni.
TehĂĄt, rakd szĂŠt hĂĄrom fĂźggvĂŠnybe a dolgot :

public void processPdf(String pdfFile) {
  PDDocument pdd=PDDocument.load(pdfFile);
  processPdd(pdd);
  pdd.save(pdfFile);
}

public byte[] process(byte[] input) {
   ByteArrayInputStream is=new ByteArrayInputStream(input);
   PDDocument pdd=PDDocument.load(is);
   return pdd.toByteArray();
}


Ăźdv
 Zs
--------- következő rész ---------
Egy csatolt HTML ĂĄllomĂĄny ĂĄt lett konvertĂĄlva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20100506/89cbffde/attachment.html 


További információk a(z) Javalist levelezőlistáról