elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Duda con instancias en Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con instancias en Java  (Leído 3,105 veces)
alf4139

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Duda con instancias en Java
« en: 27 Febrero 2018, 20:56 pm »

Hola a todos , tengo una duda en relacion a un codigo que estoy leyendo, no comprendo bien como funciona la instanciacion en este codigo, por favor si alguien me pueda explicar se lo agradaceria mucho

este codigo no comprendo la linea: cvsubmenu=(MenuSubBeanData)vectorSubMenu.get(n);

Código:
public Vector obtieneSubMenu (String menuElegido , String submenuElegido,
ServletContext sc, HttpServletRequest  request, HttpServletResponse response) throws Exception{
String menu="";
Vector vectorSubMenu=(Vector)request.getAttribute("submenu");
Vector vectorSubMenuMostrar=new Vector();
int n=0;
try {  while (n < vectorSubMenu.size()) {
   MenuSubBeanData cvsubmenu = new MenuSubBeanData();
   cvsubmenu=(MenuSubBeanData)vectorSubMenu.get(n);
//accion=cvsubmenu.getAccion();
menu=cvsubmenu.getMenu();
if (menu.trim().equals(menuElegido))
{
if (cvsubmenu.getSubmenu().trim().equals(submenuElegido)){
cvsubmenu.setSubmenuelegido("current");
}
vectorSubMenuMostrar.add(cvsubmenu);
}
n++;
 }

} catch (Exception exc) {
con.rollback();
throw exc;
 }
return vectorSubMenuMostrar;
}




En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Duda con instancias en Java
« Respuesta #1 en: 28 Febrero 2018, 20:29 pm »

Código
  1. cvsubmenu=(MenuSubBeanData)vectorSubMenu.get(n);

Estas en presencia de un casting explicito (Narrowing Casting)

https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html#get(int)

Código
  1. vectorSubMenu.get(n)

Si usas un IDE y borras justo (MenuSubBeanData) tu ide por medio de Reflection en tiempo de ejecución Runtime debería de quejarse porque el método .get() obtiene el index donde a la vez tiene un Objeto pero no sabe que tipo de objeto en especifico debe asignar,entonces al programador le toca dicha tarea aunque ya los IDE actuales por Reflection lo solucionan

En este caso el Object obtenido de que tipo será ? MenuSubBeanData

Pero como ?


Código
  1. Vector vectorSubMenu = (Vector) request.getAttribute("submenu");

Esta linea seguramente crea el Vector de ese tipo con el metodo getAttribute("submenu")

Recordando que java es fuertemente tipado

Otra manera de saber mas a fondo y con precisión es hacer debugging colando un breakPoint por ejemplo en


Código
  1. Vector vectorSubMenu = (Vector) request.getAttribute("submenu");

Código
  1. cvsubmenu = (MenuSubBeanData) vectorSubMenu.get(n);


« Última modificación: 28 Febrero 2018, 20:45 pm por rub'n » En línea

rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
alf4139

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Duda con instancias en Java
« Respuesta #2 en: 3 Marzo 2018, 00:17 am »

Hola rub'n, gracias por tu respuesta y explicacion, pero sigo con dudas, entiendo que:

Código:
request.getAttribute("submenu");


devuelve string, pueden ser varios string que son casteados al mismo tipo del objeto 'vectorSubMenu' que es un Vector, es decir, se obtiene un vector con la coleccion de strings, ¿correcto?

La linea:
Código:
cvsubmenu = (MenuSubBeanData) vectorSubMenu.get(n);

entiendo castea un string(un elemento del vector) al tipo 'MenuSubBeanData' pero que obtengo en 'cvsubmenu'?; MenuSubBeanData es una clase que tiene propiedades, getters y setters y demas metodos, que debo interpretar de esa linea mas alla de las correspondencias entre tipos de objetos y sus declaraciones.

Digamos que la Clase MenuSubBeanData se defina asi:
Código:
public class MenuSubBeanData{
        private String menu="";
        private String submenu="";
        private String descripcion="";

        public String getMenu() {
return menu;
}
public void setMenu(String menu) {
this.menu = menu;
}
        public String getSubmenu() {
return submenu;
}
public void setSubmenu(String submenu) {
this.submenu = submenu;
}
        public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}

}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Abrir solo dos instancias de mi programa « 1 2 »
Programación Visual Basic
Gorky 11 4,365 Último mensaje 28 Marzo 2006, 00:29 am
por Ironhorse
instancias en una clase
.NET (C#, VB.NET, ASP)
aixeiger 3 2,762 Último mensaje 13 Septiembre 2012, 15:24 pm
por seba123neo
Instancias múltiples de un programa.
Windows
Psyke1 4 4,081 Último mensaje 18 Enero 2013, 09:35 am
por x64core
Duda las instancias con el mismo nombre se sobreescriben? C#
.NET (C#, VB.NET, ASP)
RevolucionVegana 2 2,992 Último mensaje 11 Junio 2017, 22:20 pm
por RevolucionVegana
Multiples instancias de una estructura
Programación C/C++
huchoko 2 1,731 Último mensaje 23 Octubre 2018, 04:28 am
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines