繁体   English   中英

如何从 starter class 中的方法访问私有 integer(在嵌套类中声明)?

[英]How do you access a private integer (declared in a nested class) from a method within the starter class?

我见过很多关于访问私有方法的问题,但没有看到关于访问私有整数的问题,所以我认为这值得一问。 基本上,我有我的主要 class RunnyStack,以及一个名为 Run 的私有嵌套 class。 在 Run 内部,我初始化了一个私有 integer,长度,我试图从 RunnyStack 中的一个方法访问这个私有 int。

我已经尝试过搜索这个问题(太久了),我发现的答案对我不起作用,因为(根据 class 指令)我需要在 Run 中将长度声明为私有 int。 这意味着(根据我的尝试)我不能执行“Run hello = new Run();”,因为它说“构造函数 RunnyStack.Run() 未定义”。我还尝试了“RunnyStack.Run len = new RunnyStack” .Run();',但它只是说'构造函数 RunnyStack.Run() 未定义'

    class RunnyStack<Base> {
private class Run {
    private Base base;
    private Run next;
    private int length;

    private Run(Base base, Run next) {
        this.base = base;
        this.next = next;
        this.length = 0;
    }
}

此代码显示嵌套私有 class 的创建,包括私有 integer 长度。

    public void push(Base base) {
    if(isEmpty()) {
        top = new Run(base, top);
    }
    else {
        if(base == top) {
            length += 1;
        }
    }
}

这段代码显示了我试图访问长度的方法

我要做的就是访问长度,以便在满足 if 语句时可以增加它。 任何帮助表示赞赏,谢谢!

Run class 里面,创建一个 getter 方法:

foo getFoo(){ // Cannot be private
    return this.foo;
}

另外:二传手

void setFoo(Foo f){ // Also cannot be private
    this.foo = f;
}

您需要实现一个getter方法 - 这些通常是可以访问私有字段的public方法。

格式通常是

public field-type getFieldName () {
  return fieldname;
}

所以就长度而言

public int getLength () {
    return length;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM