Foros del Web » Programación para mayores de 30 ;) » Java »

Una duda sobre clases java

Estas en el tema de Una duda sobre clases java en el foro de Java en Foros del Web. La situación es que tengo una clase java que es pública, pero que contiene atributos de tipo final o protected. Lo que quiero hacer es ...
  #1 (permalink)  
Antiguo 11/11/2005, 01:50
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Una duda sobre clases java

La situación es que tengo una clase java que es pública, pero que contiene atributos de tipo final o protected.

Lo que quiero hacer es realizar un filtrado de lo que le llega a dicha clase para ejecutar.

Me explico con un ejemplo:

Supongamos que la clase publica con atributos final o protected está compuesta por un único String de tipo final, y con un método que lo que hace es devolver el String que contiene en mayuscula cuando llamamos a ese método.

public class Mayusculas {

final private String nombre;

final public void setNombre (String s){
nombre = s;
}

final public String nombreMayusculas{
return nombre.toUpper();
}

No sé si está bien definida, pero creo que la idea se puede entender Yo lo que quiero es crear una clase que vaya por encima de esta, y por ejemplo, filtre que el metodo nombreMayusculas no se haga si la palabra que se va a devolver es "FOROSDELWEB" por ejemplo.

La primera idea era extender esa clase Mayusculas y añadirle esa funcionalidad reescribiendo el código o añadiendo nuevas funciones, pero no se puede por tener atributos final.

La segunda idea que tengo es crear una clase nueva que use esta clase Mayusculas, y que la llame solo despues de comprobar que no es la palabra "FOROSDELWEB" la que se quiere poner en mayusculas. Pero no sé si se puede, y estoy un poco perdido.

Por otro lado, también es complicado porque de la clase Mayúsculas sólo tengo los .class, no el código fuente.

¿Alguien tiene alguna idea de como se podría realizar esto, si lo habéis hecho alguna vez, o si es posible? cualquier idea o comentario os lo agradezco muchisimo, estoy muy perdido.

Saludos
  #2 (permalink)  
Antiguo 11/11/2005, 06:43
Avatar de Ani Alamo  
Fecha de Ingreso: julio-2005
Mensajes: 35
Antigüedad: 18 años, 9 meses
Puntos: 1
Hola,
No te compliques las cosas, creo yo que si quisieras usar la clase externa Mayúsculas, y si ésta en primer lugar es ajena, no es tuya, (por lo que dices solo tener los .class y no puedas modificarlas) lo que importa es que si quieres hacer la restricción que no se invoque a ella si existe una palabra determinada, entonces podrías comparar el string con un "equals" desde tu propia clase (aquella que importe a Mayúsculas) y si son iguales las cadenas, pues no se ejecuta la llamada a mayúsculas, de lo contrario si se haría.

De otro modo si quieres echar un vistazo aquellas clases externas de conversión a mayúsculas de las qe solo tienes sus .class, también puedes decompilarlas quizá con esta herramienta que está bastante bien a la medida de lo posible:
DJ Java Decompiler (la última versión está por 3.9.9.91).

Un saludo,
__________________

Ani Alamo Gómez de González


"Sin Dios no soy nada en este mundo, sin El nada puedo ser... ni las hojas de los árboles se mueven, sino es por su gran poder. Bendito seas Señor."
  #3 (permalink)  
Antiguo 14/11/2005, 01:02
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Gracias por tu ayuda,

el problema es que este ejemplo era sencillito, pero yo en realidad del .class no voy a saber que funciones tengo que ejecutar en cada momento, tendré que hacerlo genérico o algo del estilo. Es un poco lio la verdad, gracias de nuevo.
  #4 (permalink)  
Antiguo 14/11/2005, 10:21
Avatar de kittya  
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años
Puntos: 0
siempre queda la opción de decompilar los .class
__________________
necesito una firma
  #5 (permalink)  
Antiguo 15/11/2005, 08:39
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Si, pero tampoco he conseguido nada que desesperacion
  #6 (permalink)  
Antiguo 21/11/2005, 06:52
 
Fecha de Ingreso: noviembre-2005
Mensajes: 42
Antigüedad: 18 años, 5 meses
Puntos: 0
En mi opinión deberías hacer lo que dice Ani Alamo, uséase, introducir una condición en la clase desde la que llames a las funciones que contenga el .class

Si quieres hacerlo de forma genérica, create una función que reciba un parámetro genérico y luego haces un switch en el que enviarás a una función o a otra según el parámetro.

Espero que te sirva de algo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:57.