2011-07-01 7 views
8

Jak mogę zadeklarować pole interfejsu Java, które implementuje klasę, powinno zawęzić to pole?Jak mogę zadeklarować pole interfejsu Java, które implementuje klasę powinno zawęzić to pole?

np

public interface IWorkflow{ 
    public static final String EXAMPLE;// interface field 
    public void reject(); 
} 

// and implement class 
public class AbstWorkflow implements IWorkflow 
{ 
    public static final String EXAMPLE = "ABCD"; /*MUST HAVE*/ 
    public void reject(){} 
... 
} 

Dziękuję.

Odpowiedz

4

Patrz rozdział 9.3 the specification. Nie ma przesłaniania pól w interfejsach - są one po prostu ukryte w niektórych kontekstach i niejednoznaczne w innych. Po prostu trzymałbym się z daleka. Zamiast tego umieść gettera w interfejsie (getEXAMPLE())

+1

Czy to tylko ja. Czy nie można tego zrobić z serializacją? – Link19

+2

@GlenLamb - albo nie podążam za tym, dokąd zmierzasz, a może źle odczytałeś pytanie? –

+0

Kiedy zaimplementujesz Serializable powiedziano mi, że muszę zadeklarować SerializableUID lub coś takiego. Czy to nie to pytanie próbuje osiągnąć? – Link19

11

Nie możesz.

Ponadto, interface nie może również wymagać zdefiniowania metod static w implementacji.

Najlepsze co możesz zrobić to:

public interface SomeInterface { 
    public String getExample(); 
} 
+0

Zobacz ten post, aby uzyskać więcej informacji podstawowych: http://stackoverflow.com/questions/512877/why-cant-i-define-a-static-method-in -a-java-interface – Dave

Powiązane problemy