Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/06/2019, 09:20
dacroma
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años
Puntos: 2
hallar la clase que implementa la factoria

Buen dia compañeros del foro, tengo un dilema que no he podido resolver.

en el siguiente fragmento de codigo

Código Java:
Ver original
  1. ComponenteBase base=(ComponenteBase) BuscadorFactoria.getFaces();

BuscadorFactoria es una clase concreta y el metodo getFaces(), es un metodo que devuelve un objeto de tipo Object,Como sigue:

Código Java:
Ver original
  1. public class BuscadorFactoria{  
  2.  
  3.     public static Object getFaces() {
  4.         return new Object();
  5.     }    
  6.     void enTres(){
  7.         System.out.println("metodo propio de Tres");
  8.     }
  9. }

ComponenteBase es una clase abstracta como la siguiente

Código Java:
Ver original
  1. public abstract class ComponenteBase extends Object implements EnvoltorCara<ComponenteBase>{
  2. @Override
  3.     public ComponenteBase getWraped(){        
  4.         return (ComponenteBase) new Object();
  5.     }
  6. }

y en la clase Main como la que sigue

Código Java:
Ver original
  1. public class Main {
  2.     public static void main(String[] args) {
  3.         ComponenteBase base=(ComponenteBase) BuscadorFactoria.getFaces();
  4.        
  5.     }
  6. }

Me devuelve un error como el que sigue:
Código Java:
Ver original
  1. Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to pruebas.ComponenteBase

Pero cuando me voy a la api de JavaServer Faces en la API de javax.faces.Application, y abro la documentacion de la clase AplicationFactory en la descripcion de la clase me muestra el siguiente fragmento de codigo:
Código Java:
Ver original
  1. ApplicationFactory factory = (ApplicationFactory)
  2.     FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);

y la cabeza de la clase es la siguiente:
Código Java:
Ver original
  1. public abstract class ApplicationFactory
  2. extends Object
  3. implements FacesWrapper<ApplicationFactory>
donde Obviamente ApplicationFactory es abstracta, no se como sera ahì, por que si se fijan en la parte de arriba dice que la ApplicationFactory hace un casting de un objeto y para eso se nesecita que halla alguna clase que herede de ApplicationFactory para poder trabajar, pero por mas que busco en la documentacion no hay una clase concreta que herede de la esta clase ni tampoco de la clase Application que es de la que se requiere devolver una instancia, pero cuando lo ensallo en mi computador si funciona y mi codigo no.
Que sera?.
De antemano muchas gracias.