Weitergabe von Arrays aus Methoden in andere Klasse

Bitte aktiviere JavaScript!
Hi Leute,

Ich hab da eine etwas kleinere Frage

Ich habe eine Methode geschrieben die ich in einer anderen Klasse aufrufen will.
Dafür hatte ich geplant eine weiteere Methode zur Übergabe zuschreiben.
Diese soll vom Typ public byte sein um einen Array weoterzugeben.

Hier meine Methode:
Java:
    private static String getStorageAreaGuidByPartnerOql() {
        StringBuilder b = new StringBuilder(256);
               
        b.append(" select distinct c:imp_storageAreaConsignment");
        b.append(" from ").append(Customer.class.getName()).append(" c");
        b.append(" where c:guid = ?");
        return b.toString();
    }

    private static final String storageAreaGuidByPartnerOql = getStorageAreaGuidByPartnerOql();

    private CisMap<byte[]> storageAreaGuidsByPartner = new CisHashMap<byte[]>();
   
    private byte[] getStorageAreaByPartnerGuid(byte[] custId) {
        byte[] partner = storageAreaGuidsByPartner.get(custId);
        if (partner == null) {
            CisResultSet rs = om.getResultSet(storageAreaGuidByPartnerOql);
            try {
                rs.setGuid(1, custId);
                if (rs.next()) {
                    storageAreaGuidsByPartner.put(custId, rs.getGuid(1));
                } else {
                    storageAreaGuidsByPartner.put(custId, Guid.ZEROGUID);
                }
            } catch (Exception e) {
                mm.sendMessage(e);
                partner = null;
            } finally {
                rs.close();
            }
        }
        return partner;
    }
Könnt ihr mir da helfen? Ich kriege die weitergabe irgendwie nicht hin.

Grüße
 
Zuletzt bearbeitet von einem Moderator:
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Wer soll welche Methode aufrufen, wo soll diese Methode implementiert sein, was hast du bereits dafür getan und welches genaue Problem hast du dabei? Es ist schwer, deine Problembeschreibung tatsächlich auf dein gezeigtes Code-Snippet abzubilden. Es ist halt ein bisschen Code mit zwei Methoden und zwei Feldern. Aber, wer jetzt was aufrufen soll und was dabei das Problem ist, wird nicht klar.
 
Hi Danke für die Rückmelldung

Die Oben genannte Methode soll in der Klasse Synchronizer aufgerufen werden. Irgendwo an dieser Stellle. Dabei würde ich gerne direkt das ganze Objekt übermitteln.

Java:
            @Override
            protected RetailData setData(CisResultSet rs) throws Exception {
                Object[] data = new Object[LEN_DESADV];

                byte[] sa = rs.getGuid(6);
                String[] partnerInfo = null;
                
                //TODO Hier die storageareabycostumer einpflegen
                if (useWebServiceSync && useWhouseMapping) {
                } else if (!useWebServiceSync && useWhouseMapping) {
                    partnerInfo = ss.getPartnerInfo(this.rs.getSfloorGuid4Whouse(sa));
                } else {
                    partnerInfo = ss.getPartnerInfoByStorageArea(sa);
                }

Es geht hier etwas um die Syntax da ich das erste mal mit "public byte" arbeite
 
Es geht hier etwas um die Syntax da ich das erste mal mit "public byte" arbeite
Die Syntax unterscheidet sich nicht, ein Array ist ein Objekt, dessen Referenz Du als Parameter oder Rückgabewert herumreichen kannst.

Um Deinen Code anzupassen, müsste ich jetzt ins Blaue hinein raten, was Du eigentlich haben willst. Meine Vermutung wäre dass rs.getGuid(6) die GUID des Partners liefert und Du jetzt per getStorageAreaByCustomer die GUID der Storage Area ermitteln willst.
 
Hier ist mein Versuch die Methode in einer anderen Methode aufzurufen. Allerdings jetzt erstmal in der selben Klasse damit mein Verständnis besser wird.

Java:
        private static String getStorageAreaGuidByPartnerOql() {
        StringBuilder b = new StringBuilder(256);
                
        b.append(" select distinct c:imp_storageAreaConsignment");
        b.append(" from ").append(Customer.class.getName()).append(" c");
        b.append(" where c:guid = ?");
        return b.toString();
        }

    private static final String storageAreaGuidByPartnerOql = getStorageAreaGuidByPartnerOql();

    private CisMap<byte[]> storageAreaGuidsByPartner = new CisHashMap<byte[]>();
    
    private byte[] getStorageAreaByPartnerGuid(byte[] custId) {
        byte[] partner = storageAreaGuidsByPartner.get(custId);
        if (partner == null) {
            CisResultSet rs = om.getResultSet(storageAreaGuidByPartnerOql);
            try {
                rs.setGuid(1, custId);
                if (rs.next()) {
                    storageAreaGuidsByPartner.put(custId, rs.getGuid(1));
                } else {
                    storageAreaGuidsByPartner.put(custId, Guid.ZEROGUID);
                }
            } catch (Exception e) {
                mm.sendMessage(e);
                partner = null;
            } finally {
                rs.close();
            }
        }
        return partner;
    }
    
    public byte[] getStorageAreaByPartnerGuid1 (byte[] partner) {
        
        return getStorageAreaByPartnerGuid(partner);
    }
  
    //HIER MEIN VERSUCH
    private CisMap<byte[]> storageAreaGuidsByPartner1 = new CisHashMap<byte[]>();
    
    public byte[] getSalesfloorByPartnerGuid(byte[] sFloorId) {
        byte[] partner1 = storageAreaGuidsByPartner1.get(sFloorId);
        if (partner1 == null) {
            CisResultSet rs1 = getStorageAreaByPartnerGuid1;
        }
    }
Es sollte mir nicht so schwer fallen aber ich kriege es immer noch nicht hin
 
Wenn Du getStorageAreaByPartnerGuid1 aufrufst, dann erwartet die Methode als Parameter ein byte-Array - Du übergibst nichts (tatsächlich rufst Du noch nicht einmal eine Methode auf, dafür wären runde Klammern notwendig) - und liefert ein byte-Array zurück. Du versuchst ein byte-Array einer Variablen vom Typ CisResultSet zuzuweisen, das funktioniert natürlich nicht.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben