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
[Java] Hilfe mit static
-
- Frage
-
Shade -
26. April 2003 um 20:30
-
-
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);
}
} -
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? -
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 zeilepublic 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;}
...
} -
Zitat von Shade
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 zeilepublic 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;}
...
}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 -
Zitat von ghost dog
hmmm. kann es sein, dass du private auf public andern musst??
hab ich schon versucht,bringt nix.zum code:
Java
Alles anzeigenimport java.io.*; import java.lang.reflect.Array; class file { public static void main(String[] args) { try{ String path,name; BufferedReader input=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter search path: "); path=input.readLine(); System.out.println("Enter filename: "); name=input.readLine(); File first=new File(path); search bla=new search(first,name); //Thread start=new Thread(begin); //start.start(); } catch(IOException x) {System.out.println(x);} }//ende main public class search implements Runnable { private File in; private String se; public search(File is,String si) { in=is; se=si; } public void run() { try{ if(in.listFiles() != null) { File[] filearr=in.listFiles(); int size=Array.getLength(filearr); for (int a=0;a<size;a++) { if(se.equals(filearr[a].getName() ) ) System.out.println("File found at: "+ filearr[a].getCanonicalPath() ); if(filearr[a].isDirectory() ) { search foo = new search(filearr[a],se); Thread boo=new Thread(foo); boo.start(); } }//ende for }//ende if else System.out.println("Falscher Search string!!"); } catch(IOException x) {System.out.println(x); System.out.println(in.getPath());} }//ende run }//ende search }//ende class file
-
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 -
-
Zitat von Shade
Hier liegt der Hund begraben ...
... 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. -
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.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!