Java EE 中对象的引用。远程和本地接口的区别?
References of objects in Java EE. Difference for remote and local interfaces?
据我所知,Java只是引用调用。如果实体必须通过远程接口,它还能有引用吗?现在实体基本都在另一个容器里了,怎么可能还有对象的引用呢?换句话说:'go through' 远程接口的实体是否可能不仅仅是引用,而是对象的副本(按值调用)?
抱歉,如果这是一个愚蠢的想法,但整个按引用调用(或按引用传递?)的概念让我在 Java EE 中感到困惑。
编辑:换句话说:来自会话 bean 的对象是否总是作为引用传递?
Java 始终是 按值调用。这是一个可以使事情变得清楚的例子:
class Operation{
int data=50;
void change(int data){
data=data+100;//changes will be in the local variable only
}
public static void main(String args[]){
Operation op=new Operation();
System.out.println("before change "+op.data);
op.change(500);
System.out.println("after change "+op.data);
}
}
Output:before change 50
after change 50
它是实体对象的副本而不是引用,我的意思是这就是为什么实体对象的序列化在这里非常重要,序列化有助于在通过远程接口而不是引用传输时获取实体对象的副本,因为这个引用在另一个容器中没有价值..
据我所知,Java只是引用调用。如果实体必须通过远程接口,它还能有引用吗?现在实体基本都在另一个容器里了,怎么可能还有对象的引用呢?换句话说:'go through' 远程接口的实体是否可能不仅仅是引用,而是对象的副本(按值调用)?
抱歉,如果这是一个愚蠢的想法,但整个按引用调用(或按引用传递?)的概念让我在 Java EE 中感到困惑。
编辑:换句话说:来自会话 bean 的对象是否总是作为引用传递?
Java 始终是 按值调用。这是一个可以使事情变得清楚的例子:
class Operation{
int data=50;
void change(int data){
data=data+100;//changes will be in the local variable only
}
public static void main(String args[]){
Operation op=new Operation();
System.out.println("before change "+op.data);
op.change(500);
System.out.println("after change "+op.data);
}
}
Output:before change 50
after change 50
它是实体对象的副本而不是引用,我的意思是这就是为什么实体对象的序列化在这里非常重要,序列化有助于在通过远程接口而不是引用传输时获取实体对象的副本,因为这个引用在另一个容器中没有价值..