2 a86775748 a86775748 于 2016.01.20 15:33 提问

java如何获取静态内部类变量

public class A{
private B b;

public B getB() {
    return b;
}

public void setB(B b) {
    this.b = b;
}

static class B{
    private C c;
    public C getC() {
        return c;
    }
    public void setC(C c) {
        this.c = c;
    }
}
static class C {
    private Integer a;


    public Integer getA() {
        return a;
    }
    public void setA(Integer a) {
        this.a = a;
    }
}

}
如何获取C类的变量a?

6个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.01.20 15:58
 A a = new A();
    a.getB().getC().getA()
danielinbiti
danielinbiti 回复Logo菜鸟: 只是说不知道你这B类,C类怎么set到A类中对应的方法的。如果要取值就只能这么取
接近 2 年之前 回复
a86775748
a86775748 获取不到,代码会报错,B类不是public的
接近 2 年之前 回复
ManRoot
ManRoot   2016.01.20 16:03

A a = new A();
test.getB().getC();

a86775748
a86775748 获取不到,代码会报错,B类不是public的
接近 2 年之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.01.20 16:35

B类弄个public的不就行了吗

lijianhuilijie
lijianhuilijie   2016.01.20 16:54

之所以叫做内部类,就只能在本类(A)中访问
要取值的话,new C().getA()不就行了

static修饰的类作为静态类,类初始化后内存中就只有一份。

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.20 17:33

因为C是A的静态内部类,所以可以直接在A类中访问C的,测试代码:

    public static void main(String[] args) {
        A a = new A();
        C c  = new C();
        c.setA(10);
        System.out.println(c.getA());
    }
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.20 17:45

你如果要绕圈子通过B类来获得C类的a属性值,可以如下:

    public static void main(String[] args) {
        B b = new B();
        C c  = new C();
        b.setC(c);
        c.setA(100);
        System.out.println(b.getC().getA());
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!