Cuestión interesante sobre Java y el enlace "&"

¿Cómo implemento esto en Java?

Con gran dolor a través de la API Reflection. Si desea escribir código como este, la mejor idea es usar otro idioma.

Considere programar en Groovy en su lugar. Puede usar la sintaxis de matriz para acceder directamente a los miembros de la clase por nombre: t["n"] = 2; esto funciona con el código Java heredado, por lo que no es necesario modificar TestClass para admitir este uso.

Respuesta 1

El concepto del que está hablando se llama pasar por referencia. En su mayor parte, Java lo ha abandonado: crea demasiados efectos secundarios, como el que está viendo aquí.

El problema es que, aunque desafortunadamente no puede hacer esto aquí, en realidad evita que se libere una gran cantidad de errores no intencionales.

Respuesta: 2

¿Qué hay de algo así?

public final class JustTest {

    private final Map<String, Object> fields;

    public void filledInteger() {
        System.out.println("Before change\n" + this.fields);

        fields.put("N", 2);
        fields.put("X", 20);

        System.out.println("After change\n" + this.fields);

        System.out.println("Values of name & xml\n" + fields.get("N")
           + "\n" + fields.get("X"));
    }

    private JustTest() {
        this.fields = Maps.newHashMap(); // guava
        fields.put("N", 1);
        fields.put("X", 10);
    }

    public static void main(String[] args) {
        final JustTest t = new JustTest();
        t.filledInteger();
    }
}
Respuesta: 3

No puede hacer campos individuales sin reflexión, pero puede cambiar el contenido de las colecciones. Tenga en cuenta que este no es un comportamiento realmente intencionado, sino algo que debe tener cuidado al usar colecciones.

Esto produce 5 3 2 4 2 4

public class Test
{
  public Vector<Integer> args = new Vector<Integer>();

  public void fillArgs()
  {
    args.add(5);
    args.add(3);
  }
  public Vector<Integer> getArgs()
  {
    return args;
  }

  public static void main(String args[])
  {
    Test s = new Test();

    s.fillArgs();
    Vector<Integer> temp = s.getArgs();
    for (Integer i : temp)
      System.out.println(i);
    temp.setElementAt(2, 0);
    temp.setElementAt(4, 1);
    for (Integer i : temp)
      System.out.println(i);
    for (Integer i : s.getArgs())
      System.out.println(i);
  }

}
Respuesta: 4

Estoy trabajando en un proyecto que requeriría implementar funcionalidades como la correlación cruzada. ¿Alguien puede ayudarme si hay alguna API / bibliotecas de código abierto existente?

Esto es más como referencia que cualquier otra cosa, pero me golpeé la cabeza contra la pared durante las últimas noches. Seguía recibiendo el error RESET DE CONEXIÓN de maven cuando intentaba usar FTP para ...

Tengo un método que toma una Cadena como entrada, y me gustaría que un aspecto intercepte la ejecución del método y, bajo cierta condición, modifique la Cadena y haga que el punto de unión reciba el ...

¿Es posible que una aplicación JAVA obtenga la estructura de directorios del sistema de archivos de otro host en la misma LAN? Por ejemplo: las máquinas A y B están en la misma LAN. A es el localhost y B es el ...