2012-02-14 19 views
7

Olası Çoğalt ne:
Why would one declare a Java interface method as abstract?
bir soyut yöntem java bir arabirimde

bizim ejb arayüzleri birinde aşağıdaki kodu bulundu. Öznenin arayüzde ne yaptığını bilen var mı? Ayrıca) gerekli olabilir açıklamaya veya = bu konuda okumak için bir referans veriniz yoksa

@Local 
public interface IDomasOrderProcessor { 

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

cevap

16

abstract bu durumda gereksiz olduğunu. interface'da tanımlanan tüm yöntemler, tanım olarak public ve abstract'dur.

alıntı Java Language Specification section 9.4

bir arayüz gövdesinde her yöntem bildirimi dolaylı özet, gövdesi her zaman bir noktalı virgül ile temsil edilir, yani bir bloktur.

Bir arabirimin gövdesindeki her yöntem bildirimi, dolaylı olarak geneldir.

+1

Yani "public", bu durumda tesadüfen. Yani her ikisini de bırakabilirsin ve aynı şeyi yapar. Bu kodun orijinal olarak yeniden düzenlenmiş soyut bir sınıf olması olasıdır. – Calum

+1

Gerçekten de 'public' de. Bunu cevaba ekledim, çünkü ilkim biraz gergindi. – Dev

6

Hem public ve abstract değiştiricileri arayüzlerinde örtük ve kaçınılmalıdır.

5

Bir arabirimde bir yöntem, tanım gereği genel ve soyuttır. Bazı insanların, açık bir şekilde onları daha açık bir şekilde ilan ettiğini düşündüklerini söylediler, ama bana göre ekstra gürültü gibi görünüyor. interface arasında this belgesi tüm yöntemler uyarınca

+0

Kesinlikle gürültü. (Aslında, "halkın" gereksiz olduğunu fark etmeden önce Java'da yıllardır programlama yapıyordum.) –

2

public ve abstract, yani interface içinde açıkça abstract yöntemi tanımlamak için bir ortalama yoktur.