[Java] Hilfe mit static

  • ist vielleicht ne blöde frage,aber wie schaff ichs den aus einer statischen methode eine nicht-statische methode aufzurufen?
    konkret will ich aus der main methode den konstruktor von einer klasse aufrufen.
    hab schon verschiedenste sachen ausprobiert aber ohne erfolg

    ALL GLORY TO THE HYPNO TOAD...

  • Zitat von Shade

    ist vielleicht ne blöde frage,aber wie schaff ichs den aus einer statischen methode eine nicht-statische methode aufzurufen?
    konkret will ich aus der main methode den konstruktor von einer klasse aufrufen.
    hab schon verschiedenste sachen ausprobiert aber ohne erfolg



    Entschuldige, aber ist das ein Scherz, oder verstehe ich die Frage nicht richtig?

    public class Foo {
    public Foo(int baz) {
    }
    }


    public class Main {
    public static void main(String[] args) {
    Foo foo = new Foo(0);
    }
    }

    Eins Zwei Gras Bär Hund Vier Muh Macht Die Kuh

  • Theoretisch ist es ja sehr wohl möglich aus einer statischen Methode eine nicht-statische aufzurufen oder Konstruktoren oder was auch immer...
    Was meldet denn der Compiler?
    Oder wird der Zugriff irgendwie eingeschränkt?

    The idea behind this technique is surprisingly simple: just go ahead and do whatever you want to without paying attention to what anybody else is doing. If there is a problem, worry about it later. (Many politicians use this algorithm, too) -- A. S. Tanenbaum, M. v. Steen, Distributed Systems

  • hab mich auch gewundert das dass nicht geht.aber ich bekomm immer den fehler:
    non-static variable this cannot be referenced from a static context
    in der zeile

    public static void main(String[] args)
    {...
    search bla=new search(first,name); <-Fehler!!!!
    ...}

    private class search implements Runnable
    {
    private File in;
    private String se;

    private search(File is,String si)
    {
    in=is;
    se=si;

    }
    ...
    }

    ALL GLORY TO THE HYPNO TOAD...

  • hmmm. kann es sein, dass du private auf public andern musst??

  • kommt mir komisch vor.

    vielleicht die main-methode als methode der klasse search definieren??

    sonst mehr code.

    grüße
    ines

    :catwoman: der unterschied zw. reifen & politikern ist, daß reifen ein mindestprofil brauchen.

  • Zitat von ghost dog

    hmmm. kann es sein, dass du private auf public andern musst??


    hab ich schon versucht,bringt nix.


    zum code:

    ALL GLORY TO THE HYPNO TOAD...

  • ah!
    wenn ich das richtig sehe, ist search eine inner class. & die kannst von nirgends ansprechen!!

    ein fehler "main cannot declared static" kommt, wenn du die main-methode in die inner class search gibst.

    also: aus der klasse search ein "normale" klasse machen. dann müßte es funkts. dann is aber die klasse file unnötig, weil das main kannst auch in search geben. (wenn sonst nix in file drinnen ist, wenn das der ganze code ist.)

    grüße
    ines

    :catwoman: der unterschied zw. reifen & politikern ist, daß reifen ein mindestprofil brauchen.

  • probier mal:

    Code
    search bla= new file().new search(first,name);

    weil auf eine nicht statische inner class kannst du nur mit hilfe einer instanz der outer class zugreifen.

  • Zitat von Shade

    hab ich schon versucht,bringt nix.


    zum code:

    Code
    public class search implements Runnable



    Hier liegt der Hund begraben ...

    Code
    public static class search implements Runnable



    ... dann funktioniert's.

    Ansonsten hast Du eine "Inner Class", und die gehört sozusagen jeweils zu einer Instanz Deiner äußeren Klasse, folglich kannst Du sie nicht von einer statischen Methode aus instanziieren.

    HTH.

    Eins Zwei Gras Bär Hund Vier Muh Macht Die Kuh

  • hmm,ein static davor setzen...
    manchmal sieht man den wald vor lauter bäumen nicht.
    naja hauptsache es funktzioniert jetzt.vielen dank nochmal für all die hilfe :thumb:
    jetzt nur noch regex einbauen und ich bin fertig.

    ALL GLORY TO THE HYPNO TOAD...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!