我在 java 的 inner 和 static inner class 遇到了麻烦

I've got trouble with inner and static inner class at java

首先,感谢所有阅读该主题的人。
if语句如何在测试class中变为真?我找不到任何 solution.I 无法在其中编写任何代码 method.I 试图从房间 class numberOfTiger 发送到 class 问题的方法,但我没有实现。
这是关于,如何将 int 变量 (numberofTiger) 更改为 Cat.Tiger variable.After if 语句变为 true 以调用 (getNumberOfTiger) 方法的问题。

public class Test {

    public static void main(String[] args) {

        Animal an = new Animal();
        Animal.Cat an1 = an.new Cat();
        Animal.Cat.Tiger an2 = an1.new Tiger(3, 900, 2);

        if (Animal.Question.getnumberOfTiger(an2) == 3) {
            System.out.println("True");
        }
    }
}

public class Animal {

    Cat[] c;

    // inner class
    class Cat {

        Tiger[] t;

        // inner class
        class Tiger {
            private int numberOfTiger;
            private int averageOfTigerWeigth;
            private int youngTiger;


            public Tiger(int numberOfTiger, int averageOfTigerWeigth, int youngTiger) {
                super();
                this.numberOfTiger = numberOfTiger;
                this.averageOfTigerWeigth = averageOfTigerWeigth;
                this.youngTiger = youngTiger;
            }

    static class Question {

        static int getnumberOfTiger(Cat.Tiger a) {
            return 0;
        }
    }
}

在 getNumberOfTiger() 中,您需要 return 与该对象关联的老虎数量。您目前只是 returning 0,因此它的计算结果始终为 false。

我看到了这个问题。 Tiger class 和 Cat class 需要 static。原因是,非静态内部 class 可以调用其外部 class(例如 Cat.this.something)。非静态内部类型是这样调用的:

instanceOfOuterClass.innerClass

而静态内部类型是这样调用的:

outerClassName.innerClass

调用非静态内部类型的最简单方法是 new Outer().new Inner(); Java 初学者的主要问题是他们尝试这样做:

new (new Outer()).Inner()

但实际的调用方式是

new Outer().new Inner()

此外,您的方法总是返回 0 老虎的数量。

除了将 Cat 设为静态 class 或使用其实例之外,

你还需要 a.numberOfTiger 的 getter 因为它是私有的,在 Tiger class:

public getNumberOfTiger() {
return numberOfTiger;
}

然后:

return a.getNumberOfTiger();