Metoda w parametrze metody:)

0

Witam
Mam problem dotyczący takiego mniej więcej kodu:

Klasa st:

public st(Object met) {
	//met do pamieci
}

Klasa nd:

public void dosomething() {
	zrob cos
}

public static void main(String[] args) {
	new st(dosomething);
}

I teraz problem jest nastepujacy:

dosomething cannot be resolved

Idea generalnie jest taka, żeby przekazywać tą metodę do konstruktora, zapisać ją gdzieś, żeby potem wywołać. Jeśli ktoś ma jakieś ciekawe inne rozwiązania, to też się nie obrażę :-)

0

dołóż static do metody 'dosomething' i juz :-] no i nawiasy ;-]

czyli

public static void dosomething() {
        zrob cos
}

i new st(dosomething());

0

Shimmi - czytaj uwazne - tom chce przekazac METODE a nie jej wynik

tom - da sie to zrobic refleksja, natomiast IMO powinienes enkapsulowac ta metode w interfejs i przekazywac instancje interfejsu (poczytaj o wzorcy Strategy)

pozdrawiam

0

ok dzięki za obydwie rady, rzeczywiście bardziej chodziło o to co napisał eximius - nie zmienia to jednak faktu, że tak czy owak nie wiem jak to zrobić:) Może jakiś prosty przykład? Żeby sprecyzować mój cel:

Istnieje sobie jakaś metoda w klasie załóżmy st.
Konstruktor klasy nd jako parametr ma "to coś" co pozwala na "zapamiętanie" ww metody tak żeby można było ją później wywołać.
Tworze obiekt klasy nd w klasie st, z wiadomym parametrem

Pozdro!
tom</quote>

0

Musisz zenkapsulować metodę w jakiejś klasie.

public interface ActionInterface {
    public void perform();
}
public class MyClass {
    List<ActionInterface> l = new ArrayList<ActionInterface>();
    public void add(ActionInterface action){
        l.add(action);
    }
    public void performAll(){
        for(ActionInterface action: l)
            action.perform();
    }
}
public class Main {

    public Main() {
        MyClass cl = new MyClass();
        cl.add(new ActionInterface() {
            public void perform() {
                System.out.println("123");
            }
        });
        cl.performAll();
    }
    
    
    public static void main(String[] args) {
        new Main();
     }
}
0

o, i o to mi właśnie chodziło! dzięki:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1