2012-02-14 8 views
7

Duplicar posible:
Why would one declare a Java interface method as abstract?lo que es un método abstracto en una interfaz en Java

He encontrado el código siguiente en una de nuestras interfaces EJB. ¿Alguien sabe lo que hace el resumen en la interfaz? Si lo hace por favor también explicar por qué podría ser necesario o proporcionar una referencia a leer sobre él =)

@Local 
public interface IDomasOrderProcessor { 

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

Respuesta

16

abstract es redundante en este caso. Todos los métodos definidos en un interface son public y abstract por definición.

Extracto Java Language Specification section 9.4

Cada declaración de método en el cuerpo de una interfaz es implícitamente abstracto, por lo que su cuerpo siempre está representado por un punto y coma, no un bloque .

Cada declaración de método en el cuerpo de una interfaz es implícitamente pública.

+1

Así es "público", en este caso, por cierto. Lo que quiere decir que puedes soltar ambos y hará lo mismo. Es posible que el código fuera originalmente una clase abstracta que se refactorizó. – Calum

+1

De hecho, 'público 'también. Agregué eso a la respuesta, ya que el primero fue algo escueto. – Dev

6

Ambos public y abstract modificadores están implícitos en las interfaces y deben evitarse.

5

Un método en una interfaz es público y abstracto por definición. He escuchado a algunas personas decir que sienten que declararlas explícitamente así lo hace más claro, pero a mí me parece un ruido extra.

+0

Ciertamente es ruido. (En realidad, estuve programando durante años en Java antes de darme cuenta de que el 'public' era redundante). –

2

Según this documento todos los métodos de interface es public y abstract, así que no hay medio para definir explícitamente abstract método dentro de la interface.

Cuestiones relacionadas