1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Java-Sichtbarkeit (gelöst)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AquaBall, 09.03.2012.

  1. AquaBall, 09.03.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Ich steh gerade am Schlauch.
    Verzeiht die dumme Frage, aber ich blicks gerade echt nicht (heute Nacht nicht geschlafen).
    Code:
    class test{
      int testVariable;
      void main() {
        // alles Mögliche
      }
      void func1(){
      }
      void func2(){
      }
    }
    
    class drausen {
      int eineVariable;
      void method() {       
        eineVariable = testVariable;  // <- hier hackts
        func() //1 oder 2
      } 
    }
    
    Schaff ich es echt nicht diese beiden Variablen zusammen zu bringen?
    testVariable ist "drausen" nicht sichtbar,
    und class drausen darf ich nicht drinnen definieren, weil ich die Klasse brauche.
    Ist mir fast peinlich zu fragen, ob das irgendwie geht.


    Bitte keine Tips wie Parameterübergabe, weil um was wesentlich komplexeres geht (Interface als functionsÜbergabe.)
    Oder anders gefragt: (mein eigentliches Problem) Könnt ihr mit helfen, wie ich Func1 / Func2 an "drausen" übergeben kann?
    (Ich will in einem ListArray unterschiedliche Funktionen verknüpfen.)
     
  2. TheDarkRose, 09.03.2012 #2
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Beiträge:
    1,292
    Erhaltene Danke:
    136
    Registriert seit:
    20.08.2010
    Ohne das du die Klasse instanzierst, geht schon mal gar nichts
     
  3. deek, 09.03.2012 #3
    deek

    deek Fortgeschrittenes Mitglied

    Beiträge:
    442
    Erhaltene Danke:
    110
    Registriert seit:
    09.03.2011
    Da ich gerade an einem Rechner ohne Eclipse sitze nur die light Version:

    -------
    Funktionsübergabe/Closures light für Java (da nicht vorhanden) per Interfaces:

    Code:
    public interface IFunction {
       void doSomething();
    
    }
    
    public class Foo {
       private ArrayList<IFunction> list; // instantiate in constructor   
    
       public void addFunction(IFunction param) {
          list.add(param);
       }
    
       public void doSomethingComplicated() {
          for (IFunction func : list) {
             func.doSomething();
          }
       }
    
    }
    
    
    public class FunctionGenerator {
       private Foo foo; // instantiate
    
       public void generateSomeFunctions() {
          IFunction func1 = new IFunction() {
             @Override
             public void doSomething() {
                // some calculation
             }
          }
          foo.addFunction(func1);
    
          IFunction func2 = new IFunction() {
             @Override
             public void doSomething() {
                // some other calculation
             }
          }
          foo.addFunction(func2);
       }
    
    }
    
    Prinzip klar? Du übergibst als deine Funktion immer ein Interface mit genau dieser Funktion die dann jeweils anders implementiert wird. Wenn noch Fragen sind einfach fragen.
     
    AquaBall bedankt sich.
  4. AquaBall, 10.03.2012 #4
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Danke! Die Idee hab ich mehrfach gelesen, aber hab's nicht hingekriegt.
    Doch mit deiner Kurzanleitung ist mir jetzt perfekt gelungen.

    Kurz, kompakt, vollständig.
    So solls sein!
    Danke sehr.
     
  5. deek, 11.03.2012 #5
    deek

    deek Fortgeschrittenes Mitglied

    Beiträge:
    442
    Erhaltene Danke:
    110
    Registriert seit:
    09.03.2011
    Super, freut mich wenn ich helfen konnte.
     

Diese Seite empfehlen