【发布时间】:2014-05-20 21:50:21
【问题描述】:
我有以下代码:
Example 是我无权访问的类,并且将Object original 作为实例变量。
public class Example {
private Object original;
public Object getOriginal() {
return original;
{
}
changePointer(Object param) 是一种可以在任意静态帮助器类(IE、Math)中的方法。
public static void changePointer(Object param) {
//Change the pointer of original
}
我希望changePointer(Object o) 能够更改original 的指针。
转换必须在changePointer(Object param) 中完成。 IE,以下对我没用:
public static void exampleMethod() {
Object original = new Object();
original = changePointer(original);
}
public static Object changePointer(Object param) {
return new Object();
}
参考下图(粗略绘制):
如您所见,Object 1 和 Object 2 都指向同一个内存位置。
我的问题:是否可以仅使用变量 Object 2 来更改 Object 1 的指针?
需要考虑的其他信息:
- 我无权访问
Example的创建或任何代码。 - 我确实可以访问
Example的实例。 - 我无权访问
original在Example内的创建。 - 我无法访问许多使用
original的方法。 changePointer(Object param)可能不是必需的。如果可以通过其他方式访问和更改original,那将产生相同的效果。
注意:我理解 pass by reference 与 pass by value 的概念。我知道 Java 是 pass by value,这不是我要问的。我在问有没有什么办法,知道Java是pass by value,以上是可能的。
【问题讨论】:
-
指向新类型的对象还是同类型的对象?听起来您想将
Object 1转换为Object 2 -
没有。变量
original是方法exampleMethod的本地变量,不能从该方法外部引用。 -
回答您的注意事项:否。
-
@Brendan 我的意思是对象 1 和 2 或相同类型的对象。类型无关紧要,但它们是相同的类型。我将对这个问题进行一些澄清。
-
@HotLicks 好吧,这就是我害怕的。看来我运气不好。
标签: java pointers object reference