Jak uruchomić metodę "Drukuj ()", gdy klasa utworzona jako obiekt? Chcę uruchomić metodę "Drukuj ()" zaraz po linii "A OBJ = New A ();"

To znaczy, zadzwoń do klasy, a nie metody. Że będzie działać natychmiast po powołaniu

class a {

    public static void print() {
        System.out.println("Hey!");
    }
    

}


public class MyClass {
    public static void main(String[] args) {
        a obj = new a(); // I want to run print() method right after it

    }
}
0
Ziv Sion 12 październik 2020, 16:09

1 odpowiedź

Najlepsza odpowiedź

Myślę, że jeśli jest to jakiś rodzaj dziwnej Javy Puzzler (dlaczego cholera nie właśnie umieściłby print() w konstruktorze?) Możesz umieścić go w inicjalizacji:

class a {
    { print(); }
    public static void print() {
        System.out.println("Hey!");
    }
}

Dostanie zadanie. Ale jest to bardzo głupi pomysł - na poziomie pliku klasy to wszystko to samo, niezależnie od tego, czy to robisz, czy to robisz lub umieść oświadczenie print() w konstruktorze. W tym momencie nie jesteśmy właśnie nitpicking na funkcje językowe.

Być może zrób krok. Miałeś jakiś nieznany problem. Myślałeś: wiem! W jakiś sposób konstrukcja obiektów tej klasy powoduje uruchomienie metody drukowania, ale bez wprowadzenia połączenia do drukowania w konstruktorze! Och, ale jak to zrobić - lepiej zapytaj.

To była niewłaściwa myśl. Więc podaj nieznany problem zamiast pytania o złe "rozwiązanie".

NB: Możesz także wykonać inicjalizatory statyczne, np.

class a {
    static { print(); }
    public static void print() {
        System.out.println("Hey!");
    }
}

A teraz druk () będzie w rzeczywistości uruchomiony przed tym konstruktorem. Biegnie tylko raz, kiedykolwiek, to jest punkt statycznych inicjujących: biegają w chwili, jak bardzo wyglądają na śmieszne w tej klasie a (zrób wszystko w ogóle), a po ich uruchomieniu Nigdy więcej nie biegają.

Twoje pytanie jest dość niejasne, więc tylko dzikie dźgam.

1
rzwitserloot 12 październik 2020, 13:19