首页 > 解决方案 > Java:构造函数变量与在类级别可见的变量

问题描述

我是 Java 新手,我继承了这样的代码(来自 Python)

Q1)在班级级别上有变量有什么意义?
Q2)区分“这个”有什么意义。而不是在构造函数中使用它?在python中,我总是用“this”在构造函数中设置变量

public class Schedule {
    private final String id;
    private final Clock clock;
    private final Map<String, WorkJob> workStore;             
    private Instant lastUpdatedTime;

    @Inject
    public Schedule(
            Clock clock,
            @Named ("id") String id,

    ) {
        workStore = new ConcurrentHashMap<>();
        this.clock = clock;
        this.id = id;
        this.lastUpdatedTime = clock.instant();
   }

例如,怎么来this.lastUpdatedTimeworkStore不是this.workStore

是因为final被使用了吗?那怎么this.clockthis.id

标签: java

解决方案


类上的变量称为实例变量,这意味着当您构造它的新实例时Schedule,将具有特定于实例的那些变量。

关键字基本上是在this说我的实例,所以对于这个例子,构造函数接受一个名为的变量clock,而 Schedule 类也有一个名为时钟的变量。因此,要区分两者,请使用 this 关键字。

this.clock = clock;将我实例上的变量时钟设置为传递给构造函数的时钟值。


推荐阅读