2012-02-14 10 views
7

Eventuali duplicati:
Why would one declare a Java interface method as abstract?che cosa è un metodo astratto su un'interfaccia in Java

ho trovato il seguente codice in una delle nostre interfacce EJB. Qualcuno sa cosa fa l'abstract nell'interfaccia? Se non si prega di spiegare anche il motivo per cui potrebbe essere necessario o fornire un riferimento per leggere su di esso =)

@Local 
public interface IDomasOrderProcessor { 

    public abstract void executeOrderLines(List<OrderLine> lines); 
    public abstract void setupJob(List<OrderLine> lines); 
    public abstract void setupJob(OrderLine line); 
} 

risposta

16

abstract è ridondante in questo caso. Tutti i metodi definiti su un interface sono public e abstract per definizione.

Estratto Java Language Specification section 9.4

Ogni dichiarazione di metodo nel corpo di un'interfaccia è implicitamente astratto, per cui il suo corpo è sempre rappresentata da un punto e virgola, non un blocco .

Ogni dichiarazione di metodo nel corpo di un'interfaccia è implicitamente pubblica.

+1

Quindi è "pubblico", in questo caso, per inciso. Il che significa che puoi abbandonare entrambi e farà la stessa cosa. È possibile che il codice fosse in origine una classe astratta che è stata rifattorizzata. – Calum

+1

Infatti, anche "pubblico". Ho aggiunto questo alla risposta, in quanto il mio primo era un po 'conciso. – Dev

6

Sia public e abstract modificatori sono impliciti nelle interfacce e dovrebbero essere evitati.

5

Un metodo in un'interfaccia è pubblico e astratto per definizione. Ho sentito alcune persone dire che sentono che dichiararle esplicitamente in questo modo rende più chiaro, ma a me sembra un rumore in più.

+0

È certamente rumore. (In realtà avevo programmato per anni in Java prima di rendermi conto che il 'public' era ridondante.) –

2

Secondo this documento tutti i metodi di interface è public e abstract, quindi non c'è medio di definire esplicitamente abstract metodo all'interno della interface.

Problemi correlati