Möglichkeit um festzustellen von welcher Klasse eine Methode aufgerufen wird?



  • Gibt es eine Möglichkeit abzufragen, von welcher Klasse die aktuelle Methode aufgerufen wurde?



  • Ja. erstelle ein neues Throwable-Objekt, dann hast du darin den gesamten Stacktrace.



  • Könntest du mir bitte einen kurzen Beispielsource posten?
    Danke



  • void foo()
    {
        Throwable bar = new Throwable();
        bar.fillInStackTrace();
        bar.getStackTrace();    // Liefert StackTraceElement[]
    }
    

    Aber mal ehrlich. Das ist nicht wirklich guter Stil und ich kann mir nicht vorstellen, dass du so etwas ernsthaft brauchst.



  • Wenn die Methode was unterschiedliches tun soll, dann mach zwei verschiedene Methoden daraus. Gemeinsamkeiten kannst du ja in einer gemeinsamen Methode zusammenfassen.

    Noch zu Throwable:
    http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html



  • Ok ich erkläre mal kurz worum es geht:
    Ich habe ein programm geschrieben, in welchem ein vector mit String-Arrays gefüllt wird. Außerdem habe ich in eine randeren Klasse eine Funtion geschrieben public static void sortByString(Vector vec, int pos);
    die, die Arrays in dem Vector in die natürliche Reihenfolge des Strings Array[pos] sortiert (soll das gleiche machen, wie Arrays.sort(Object), nur dass, das Object ein Vector mit StringArrays ist, verständlich?). Könnte nun natürlich statt void Vector setzen, wäre jedoch schöner wenn es wie das sort() aus dem util.Arrays aussieht ... Jedoch weiß ich nicht wie ich dem Programm sagen soll, dass es den Vector aus dem "Mainprogramm" durch den sortierten Vector ersetzen soll ...



  • Hö? Wenn du deinen Vector zum Sortieren übergibst, dann ist er sortiert. Was willst du dann noch ersetzen?
    Poste im Zweifelsfall mal Code...



  • OOOOOOOOOOOOPS 😃
    Habe blos vergessen die Ausgabe zu überarbeiten, funktioniert schon längst ...
    Ok trotzdem nochma der Source, wens interessiert:

    package myLib;
    import java.util.*;
    
    public class XVector extends Vector
    {
       public static void sortByString(Vector vec)
       {
          int vecSize = vec.size();
          String[] insert = new String[vecSize];
          int i = 0;
          while(i < vecSize)
          {
             insert[i] = ((String)vec.elementAt(i));
             i++;
          }
          vec.setSize(0);
          Arrays.sort(insert);
          i = 0;
          while(i < insert.length)
          {
             vec.addElement(insert[i]);
             i++;
          }
       }
       public static void sortByString(Vector vec, int pos)
       {
          int vecSize = vec.size();
          String[] insert = new String[vecSize];
          Vector vecCopy = (Vector)vec.clone();
          int i = 0;
          while(i < vecSize)
          {
             insert[i] = ((String[])vec.elementAt(i))[pos];
             i++;
          }
          vec.setSize(0);
          Arrays.sort(insert);
          i = 0;
          while(i < insert.length)
          {
             int n = 0;
             while(!insert[i].equals(((String[])vecCopy.elementAt(n))[pos]))
             {
                n++;
             }
             vec.addElement(vecCopy.elementAt(n));
             i++;
          }
       }
    }
    

Anmelden zum Antworten