Estoy usando la biblioteca GWT. Hay una clase base llamada Widget de la que heredan todos los widgets. Algunos widgets implementan ciertas interfaces (por ejemplo, HasText), otros no. A veces deseo garantizar que algo que se transmite como argumento a una función es de cierta clase Y implementa una cierta interfaz.¿Puedo garantizar que estoy escribiendo en la clase Y la interfaz de un argumento?
Por ejemplo, deseo tener una función que adopte un argumento X, donde X es del tipo de clase Widget AND del tipo de interfaz HasText. Deseo tener este comportamiento porque solo se pueden agregar Widgets a los contenedores de diseño, y HasText especifica el conjunto completo de comportamientos que realmente necesito de dicho Widget.
En forma de pseudocódigo, podría ser:
public void fx(I_AM_A_Widget_AND_IMPLEMENT_INTERFACE_HasText x){
//do stuff with x, which is guaranteed to be a Widget AND implement HasText
}
Es éste en todo lo posible en Java? Si hay varias formas de hacerlo, ¿hay una forma preferida/mejor?
Situaciones como estas son las razones por las que odio el tipeo nominal. – dsimcha