English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Perché l'interfaccia non ha un blocco di inizializzazione statico quando può avere solo metodi statici in Java?

in JavaInterfacciasimilano alle classi, ma contengono solo metodi e campi abstracti finali e statici.

Metodi staticivengono dichiarati con la parola chiave statica, che viene caricata insieme alla classe. Puoi accedere ai metodi statici con il nome della classe senza necessità di istanziare un'istanza.

Metodi statici negli interfacce da Java 8

Dalla versione Java 8 in poi, puoi usare metodi statici negli interfacce (con corpo). Devi chiamarli col nome dell'interfaccia, come faresti con i metodi statici delle classi.

Esempio

Nell'esempio seguente, definiamo un metodo statico nell'interfaccia e lo accediamo da una classe che implementa l'interfaccia.

interface MyInterface{
   public void demo();
   public static void display() {
      System.out.println("This is a static method");
   }
}
public class InterfaceExample{
   public void demo() {
      System.out.println("This is the implementation of the demo method");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.demo();
      MyInterface.display();
   }
}

Risultato di output

This is the implementation of the demo method
This is a static method

Static block

Static blockÈ un blocco di codice che utilizza la chiave statica. Di solito, questi vengono utilizzati per inizializzare i membri statici. Il JVM esegue i blocchi statici prima del metodo main durante il caricamento della classe.

public class MyClass {
   static{
      System.out.println("Hello this is a static block");
   }
   public static void main(String args[]){
      System.out.println("This is main method");
   }
}

Risultato di output

Hello this is a static block
This is main method

Blocchi statici nell'interfaccia

Principalmente, se non sono stati inizializzati i blocchi statici al momento della dichiarazione, vengono utilizzati per inizializzare le variabili di classe / statiche.

Quando si dichiara un campo nell'interfaccia, deve essere assegnato un valore, altrimenti viene generato un errore di compilazione.

Esempio

interface Test{
   public abstract void demo();
   public static final int num;
}

Errore di compilazione

Test.java:3: error: = expected
   public static final int num;
                              ^
1 error

Quando assegni un valore a una variabile statica finale nell'interfaccia, risolvi questo problema.

interface Test{
   public abstract void demo();
   public static final int num = 400;
}

Quindi, non è necessario includere blocchi statici nell'interfaccia.

Potrebbe piacerti anche