2011-07-01 9 views
8

¿Cómo puedo declarar el campo de la interfaz Java que implementar la clase debería refinar ese campo?cómo puedo declarar el campo de la interfaz java que implementar la clase debe refinar ese campo

por ejemplo

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(){} 
... 
} 

Gracias.

Respuesta

4

Véase la sección 9.3 del the specification. No existe una anulación de los campos en las interfaces; están ocultos en algunos contextos y ambiguos en otros. Me mantendría alejado. En su lugar, ponga un getter en la interfaz (getEXAMPLE())

+1

¿Soy yo solo? No serializable hacer esto? – Link19

+2

@GlenLamb - o bien no estoy siguiendo a dónde vas, o tal vez has leído mal la pregunta? –

+0

Cada vez que implemente Serializable me dicen que necesito declarar un SerializableUID o algo así. ¿No es eso lo que la pregunta está tratando de lograr? – Link19

11

No puede.

Además, un interface tampoco puede requerir static métodos para definir en una implementación.

Lo mejor que puede hacer es esto:

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

Consulte esta publicación para obtener más información general: http://stackoverflow.com/questions/512877/why-cant-i-define-a-static-method-in -a-java-interface – Dave

Cuestiones relacionadas