Java 对象的初始化/声明

标签 java object initialization

我有一个 MyObject 类型的对象 obj,我声明了它的实例。

MyObject obj;

但是,我没有初始化它。 MyObject 的类看起来像:

public class MyObject {
    public String i;
    public String j;
    public MyObject(String i) {
        i = this.i;
    }
}

现在,我想设置 j 的值。所以我说:

obj.j = "Hello";

我可以在不初始化 obj 的情况下执行此操作吗?即不用说:

obj = new MyObject("My i");

如果我要检查它的值,如果我不初始化它,或者在其中设置一个字段足以使其不为空,那么该对象是否将为空?

谢谢!

最佳答案

不,你不能那样做。如果您想访问其字段,则必须创建 MyObject 的新实例。

当然,除非您将字段设为静态

请注意,将字段设为 public 会违反封装性。您应该将它们设置为私有(private)(或 protected ,如果合适的话)并使用 getter 和 setter 来提供访问权限。

旁注:

public MyObject(String i) {
    i = this.i;
}

这不会达到您想要的效果。

您必须将参数 i 分配给字段变量 i,而不是相反。

public MyObject(String i) {
    this.i = i;
}

关于Java 对象的初始化/声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20101396/

相关文章:

java - 部署问题,即使在 pom 中也找不到类

java - AlertDialog 类型不兼容错误

Grails Controller 的 Java 时间转换

php - 如何在 PHP 中初始化对象,然后在自动运行的类中创建什么函数?

object - 创建一个对象并编码数据 Flutter

C++组合和初始化

java - Java 中的 apache poi 和 swing 问题

用于使用预填充数据创建 stdClass 的 PHP 快速语法

成员和mixin的c++可变参数模板构造函数初始化列表

c++ - C++ 中的玛雅日历