Page 1 of 1

Pregunta de Java, modificar variable global desde objeto?

PostPosted: Thu Jun 25, 2015 7:24 am
by erkosone
Hola, alguien sabe como modificar una variable global tipo 'String' desde un metodo cualquiera de un objeto?

Parece una tontería de pregunta pero no encuentro nada en la red sobre punteros en java.. ahora si que estoy perdido.. :P

Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Thu Jun 25, 2015 10:58 am
by CicTec
Hola erkos,

En Java no existen punteros, si quieres modificar una string, simplemente asignale un nuevo texto: string_var = "text";

Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Thu Jun 25, 2015 3:02 pm
by brujoMX
De hecho en Java no existe el termino de variable global. Te refieres a una variable de Clase o de Instancia ?

Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Thu Jun 25, 2015 9:12 pm
by erkosone
Me refiero a una variable que creo al inicio del código y que es accesible desde cualquier parte del programa.

Creo haber entendido que se puede hacer lo de modificar una variable de acceso global o como se diga en java creando un objeto que apunta a la variable pero no termino de entender como se hace.. esto de que no existan los punteros es una cosa muy extraña para mi, no se programar sin ellos.. auuuchh...

Lo unico que quiero hacer es tener al inicio del programa una variable llamada 'String str_1;' y poder decirle al metodo de una clase que es esa la variable sobre la que tiene que trabajar, vamos lo que en C/C++ se haría pasando la variable por referencia tan sencillamente pero que en java parece que no se puede hacer, esque no puede ser, se tiene que poder hacer algo tan básico de alguna manera no?

Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Thu Jun 25, 2015 11:02 pm
by brujoMX
En Java no existe los punteros por que no son necesarios, todo se pasa como referencia menos los tipos primitivos, aun asi puedes usar los wrappers para tal cosa.
Creo que este ejemplo es lo que mas se acerca a una variable global, pudiera usar tambien los static import para llamar a str_1 sin necesidad de hacer referencia a la clase donde esta definida.

Code: Select all
//Main.java
public class Main
{
    public static String str_1;

    public static void main(String...args)
    {
        new MyClass().workingMethod();
    }
}

//MyClass.java
public class MyClass
{
    public class workingMethod()
    {
        Main.str_1 = "Hello World";
        System.out.println(Main.str_1);
    }
}


Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Fri Jun 26, 2015 5:39 am
by erkosone
Muchas gracias por vuestro tiempo os lo agradezco mucho.
BrujoMX la idea es que el método no conozca la variable con la que tiene que trabajar, simplemente quiero pasarsela por referencia para no limitar al método a una variable, si no que pueda trabajar con cualquiera que sea de ese tipo, por poner un ejemplo sería algo así lo que quiero hacer:

Source Code (Java) [ Download ] [ Hide ]
  • //Main.java
  • public class Main
  • {
  •     public static String str_1;
  •     public static String str_2;
  •  
  •     public static void main(String...args)
  •     {
  •         MyClass obj_1 = new MyClass().workingMethod( &str_1 );
  •         MyClass obj_2 = new MyClass().workingMethod( &str_2 );
  •     }
  • }
  •  
  • //MyClass.java
  • public class MyClass
  • {
  •     public class workingMethod( String pointer myStr_ )
  •     {
  •         System.out.println(*myStr_);
  •     }
  • }


Esa es la idea, que el método directamente ignore el nombre original de la variable, simplemente que sepa donde tiene que escribir y leer y que lo haga indiferentemente de la variable que sea.
Se que esa nomenclatura de punteros no existe en java XD.. es de gemix, pero vamos que esa es la idea de lo que quiero hacer.

Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Fri Jun 26, 2015 9:30 am
by CicTec
Como ya dicho en Java no existen los punteros, aunque usa ese mecanismo implicitamente, no necesitas pasar usar el & para pasar el address a una variable u el * para obtener el valor, eso lo hace implicitamente Java, simplemente usa el dato como si fuera una variable normal.

Sobre pasar a un parametro cualquier tipo de dato, debes declarar este parametro de tipo Object, todavia si internamente el dato va a usar metodos o miembros especificos, debes acceder a ellos casteando oportunamiente el dato con el tipo (como harias en C).

Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Fri Jun 26, 2015 5:54 pm
by erkosone
Gracias por la información ;)

Re: Pregunta de Java, modificar variable global desde objeto

PostPosted: Sat Jun 27, 2015 8:51 am
by CicTec
De nada.