Digamos que tengo una interfaz en Java:clase de interfaz de la aplicación debe ser capaz de agregar sólo un objeto de la misma clase
interface I {
void add(I foo);
}
, y también dos clases C y D que implementan esta interfaz.
¿Hay alguna manera de modificar la interfaz tal que sólo podía hacer:
C c = new C();
c.add(new C());
, pero no
c.add(new D());
?
que tenía esta pregunta en un examen, pero mi única idea era utilizar el instanceof operador en la definición del método:
class C implements I {
public void add(I foo) {
if (foo instanceof C) {
System.out.println("instance of C");
} else {
System.out.println("another instance");
}
}
}
Sin embargo, no sé cómo modificar la interfaz de modo que produzco el mismo efecto.
Gracias
Este método no es infalible. Por ejemplo, todavía puedes hacer algo como 'clase D implementa I'. Sin embargo, es un indicador muy fuerte de intención, y un desarrollador que viola lo anterior merece todo lo que obtiene. –
Dunes
Para evitar advertencias sobre el tipo no parametrizado, la declaración debe ser 'interface I>'. –
@Bohemian ¡Gracias! – Claudiu