我在java的内部和静态内部类中遇到了麻烦

时间:2015-05-01 18:30:54

标签: java inner-classes

首先,感谢所有阅读该主题的人。
if语句如何在测试类中成为现实?我找不到任何解决方案。我无法在这些方法中编写任何代码。我试图从Room类numberOfTiger发送到类问题的方法,但我没有实现。
这个问题,如何将int变量(numberofTiger)更改为Cat.Tiger变量。之后if语句变为true to invoke(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;
        }
    }
}

3 个答案:

答案 0 :(得分:1)

除了使Cat成为静态类或使用其实例外,

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

public getNumberOfTiger() {
return numberOfTiger;
}

然后:

return a.getNumberOfTiger();

答案 1 :(得分:0)

在getNumberOfTiger()中,您需要返回与该对象关联的老虎数。您目前只返回0,因此它将始终评估为false。

答案 2 :(得分:0)

我看到了这个问题。 $('input[name="c[]"]').on('keydown', function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == 13){ //Enter event.preventDefault(); // function to focus next a[] textbox $(this).closest('.row').next(".row").find('input[name="a[]"]').focus(); } }); 班级和Tiger班级必须为Cat。原因是,非静态内部类可以调用其外部类(例如static)。非静态内部类型的调用方式如下:

Cat.this.something

而静态内部类型的调用方式如下:

instanceOfOuterClass.innerClass

调用非静态内部类型的最简单方法是outerClassName.innerClass Java中初学者的主要问题是他们尝试这样做:

new Outer().new Inner();

但实际的调用方式是

new (new Outer()).Inner()

此外,您的方法总是返回new Outer().new Inner() 来计算老虎数。