Java 重写/更改对象以更改引用而不使用setter

Java 重写/更改对象以更改引用而不使用setter,java,pointers,reference,Java,Pointers,Reference,我很难确定是否可以在不使用类设置器方法的情况下更改所有引用。 我还限于java.util.*方法 想象一下这个代码: public static void main(String[] args) { List<Apple> first = new ArrayList<>(); List<Apple> second = new ArrayList<>(); Apple someApple = new Apple(5);

我很难确定是否可以在不使用类设置器方法的情况下更改所有引用。 我还限于java.util.*方法

想象一下这个代码:

public static void main(String[] args) {
    List<Apple> first = new ArrayList<>();
    List<Apple> second = new ArrayList<>();

    Apple someApple = new Apple(5);
    first.add(someApple);
    second.add(someApple);



    Apple changeIt = first.get(0);
    // Is it possible to change / rewrite object changeIt (no class setters available)

}


public static class Apple {
    int size;

    public Apple (int size){
        this.size = size;
    }

    public int getSize() {
        return size;
    }

}
目标是在列表2中更改相同的对象。我无法直接访问二级或二级设置者列表

编辑> 也许这段代码可以更好地解释这种情况:

List<Obj> doSomething = cantTouch.getUseThis();

public class Obj {
    var SomeVariables;
    public Obj(){}
}

public class cantTouch {
    private static List<Obj> tryToModify = new ArrayList<>();
    public static List<Obj> useThis = new ArrayList<>();

    public static void createObj() {
        Obj someObj = new Obj();
        tryToModify.add(someObj);
        useThis.add(someObj);
    }

    public static List<Obj> getUseThis(){
        return useThis;
    }
}

如果您想编辑对象的私有字段,但没有公共方法可以编辑,您可以使用它。然而,这通常是一个坏主意,因为它绕过了可能存在的类内部逻辑,例如,对尝试分配的值进行健全性检查,或者对可能与您更改的字段相关的其他字段进行内部更新


为了找到最佳解决方案,请更详细地解释您的情况。你为什么不能在球场上有一个二传手?它是不是某个第三方库,您没有这些库的源?

列表中不包含对象。它们包含对对象的引用。您的示例显示了包含对同一对象的引用的两个列表。如果通过任一引用对一个对象调用mutator方法,则该对象将被更改。如果您更改了一个列表中的引用,它不会自动更改另一个列表中的引用。好吧,情况是这样给我的。任务说我不能修改任何代码。我必须修改存储在私有变量中的对象引用。我只能通过另一个数组中的引用访问这些对象,在该数组中,一个对象是在创建时添加的,如上面的代码所示。我还不确定我或你是否正确理解了任务。只是为了确保:您是否必须更改第二个列表中的引用,即用另一个对象替换第二个列表中的对象,或者您是否需要修改对象本身,例如第一个示例中的苹果大小字段?如果是后者,您是否有权访问“大小”字段?在我的情况下,是否更改或替换对象并不重要。是的,我必须更改第二个列表中的对象。我想,由于我没有设置大小的权限,我唯一的选择就是用新属性替换对象。嗯,你不能编辑对象,也不能编辑列表。对我来说,听起来你无能为力。同样,我知道的唯一技术方法是通过反射编辑对象字段。但是你说你只能使用java.util.*包?所以,对不起,我想不起来了,没问题,还是谢谢你。无论如何,反思是一件我从未听说过的好事。