有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java当你说objectsomeobject=otherSameObject时会发生什么;

我正在用一个JTabbedFrame用Java制作一个应用程序。每个选项卡都由扩展JFrame的单独类创建。我想通过在窗口关闭时将对象保存到一个文件来保存每个选项卡的状态,并在创建选项卡时从文件中读取它们。我知道当你序列化一个对象时,所有的实例变量都会被保存,但是构造函数会发生什么呢?例如,当我在构建选项卡框架的类中说:

public class Jtab{
    private ClassThatExtendsJFrame tab;

    public Jtab(ClassThatExtendsJFrame tab){  

         this.tab = tab; // what happens here? Is the constructor called?
         JTabbedPane tabs = new JTabbedPane();
         tabs.addTab("name", icon, this.tab, "tooltip");
    }

}    

布局JFrame的所有代码当前都在构造函数中。布局中的所有JLabel和元素都是我在构造函数中指定的类的属性。因此,我看到有两个可能发生的选项:调用构造函数并重置所有变量,或者不调用构造函数并不创建布局。完成我想做的事情的最佳方式是什么


共 (3) 个答案

  1. # 1 楼答案

    因为赋值表达式的左侧不能是“对象”,所以永远不能说object=object。而是某种类型的参考变量。所以你只能做变量被赋值的对象引用。或者将变量与另一个变量引用进行比较

  2. # 2 楼答案

    在构造函数中,为传递给构造函数的值分配一个局部字段,其中字段和局部变量具有相同的名称-

    public Jtab(ClassThatExtendsJFrame tab){  
         this.tab = tab; // assign tab from the argument to this instance's field
    

    也可以写成

    public Jtab(ClassThatExtendsJFrame that{  
         tab = that; // <  this.tab
    

    再次强调,{}是为了克服名称冲突

  3. # 3 楼答案

    你是说

    this.tab = tab;
    

    它们是两种不同的参照物

    这个。tab指的是类的字段

    tab指的是构造函数的参数

    因此,将参数引用的引用指定给字段