1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Samsung I7500, 25.09.2009 #1
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Moinsen!

    Habe mal 2 Fragen zu Java.

    1) In PHP gibt es funktionen wie z.B. call_user_method. Man übergibt dieser Funktion den namen einer Klasse und einer Methode, und dann ruft die Funktion die Methode innerhalb dieser Klasse auf. Gibts sowas auch in Java? Bzw. lässt es sich realisieren?

    2) Mittels Intent kann man ja ne neue Activity starten. Dazu muss man der Funktion ne Klasse übergeben:

    Intent(this,main.class);

    Nun würde ich Klasse gerne dynamisch geladen ala:

    String name = "main.class";
    Intent(this,name);

    (Wie) lässt sich das realisieren?

    Danke schonmal ;)
     
  2. Kranki, 25.09.2009 #2
    Kranki

    Kranki Ehrenmitglied

    Ich bin nicht sicher, ob ich verstehe, was du meinst. Soll es da einen Unterschied geben, zu dem, was der banale Punkt-Operator macht?

    Informier dich mal über die Reflection API.
     
  3. Samsung I7500, 25.09.2009 #3
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Zu 2: Werd ich mir mal anschauen.

    Zu 1:

    PHP:
    class foo {
        function 
    bar() {

        }
    }
    In PHP hast Du 2 Möglichkeiten die Methode bar aufzurufen, entweder über den Scope Resolution Operator:

    PHP:
    foo::bar();
    Oder aber über die call_user_method funktion:

    PHP:
    $class "foo";
    $method "bar";
    call_user_method($class,$method);
    Nur dass beim Letzteren die Namen der Klasse/Methode aus einer Variable (in meinem Fall wiedermal ein String) kommen. So lassen sich Methoden halt dynamisch aufrufen, und mit method_exists() kann man zudem noch überprüfen, ob eine Methode innerhalb einer Klasse existiert, bevor man halt call_user_method() aufruft.

    Läuft prinzipiell auf das selbe wie zu 2 hinaus, funzt mit der Reflection API wunderbar.

    Danke! :)
     
  4. SirMArtin, 25.09.2009 #4
    SirMArtin

    SirMArtin freier Samsungsupporter

    Das ist beides Reflection. Allerdings ist das ziemlich teuer (==inperformant). Außerdem werden bspw. Refactorings nicht automatisch von Eclipse durchgeführt. Fehler fallen grundsätzlich erst zur Laufzeit auf. Wenn es möglich ist sollte man das vermeiden...

    Was genau willst Du denn machen? ggf. fallen uns ja noch andere Lösungswege als Reflection ein, wenn wir die genaueren Anforderungen kennen. ;)

    SirMArtin
     
  5. Samsung I7500, 25.09.2009 #5
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Naja was hab ich wohl vor? Genau das, was Reflection da halt macht... ;)

    Ich bastel mir grad ne App, die mit nem Server kommuniziert, und von diesem halt ne Ansage bekommt, welche Funktion sie bei bestimmten Aktionen aufrufen soll. Da sich das unter Umständen jedoch ändern kann, wollt ich das ganze halt dynamisch haben, ohne dass ich dafür extra die App updaten muss...
     
  6. SirMArtin, 25.09.2009 #6
    SirMArtin

    SirMArtin freier Samsungsupporter

    Naja. Die App muss ja die Funktion unterstützen. Sonst kann der Server ihr ja nicht mitteilen, dass sie diese Funktion auszuführen hat. Somit musst Du die App schon updaten, wenn ne neue Funktion hinzukommt.

    Die Schnittstelle zum Server ist halt fix. Wenn Du die Aufrufe nur per String übergibst, brauchst Du zwar den Teil, der den String parst nicht anpassen. Die App an sich muss aber entsprechend reagieren. Somit hast Du die eigentliche Schnittstelle nur versteckt und tiefer in die Applikation verlagert, anstatt sie direkt in der Schnittstellenklasse umzusetzen. Seperation of Concerns ist hier das Stichwort. Jeder Klasse seine Zuständigkeit. Ein Mechanismus wie REST, SOAP oder XMLRPC sollte Dich hier interessieren.
    Aus Entwicklersicht ist es komplexer, wenn Du Reflection nutzt anstatt einem typisierten Selektionsmechanismus.
    Vielleicht sind ja auch entsprechende Frameworks für Dich interessant (Guice von Google bspw.).

    Just my 2 cents.

    SirMArtin
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] LL zur Laufzeit erstellen, Abstand zwischen LL und LL möglich ? Android App Entwicklung 06.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[OFFEN] Frage zum Einsatz von Qualifiers für die dimens.xml Android App Entwicklung 30.08.2017
[ERLEDIGT] Fragen zur Play Developer Console, wie Steuern etc. Android App Entwicklung 29.08.2017
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] Bild per Intent an ListView übergeben und anzeigen Android App Entwicklung 13.08.2017
[ERLEDIGT] Auffangen von nativen C Exeptions in Java Code? Android App Entwicklung 08.08.2017
[ERLEDIGT] Android Studio Erste App-Programmierung Android App Entwicklung 02.08.2017
[ERLEDIGT] Fragen zum Einstieg in APP-Entwicklung Android App Entwicklung 01.08.2017
[ERLEDIGT] Frage zu Datenschutz bei Appveröffentlichung Android App Entwicklung 31.07.2017
Du betrachtest das Thema "2 grundlegende Java-Fragen" im Forum "Android App Entwicklung",