场景
今天碰到一个极为经典的问题,是同事在开发期间碰到的。问题大概描述如下:
在a类中添加了一个字段,同时也利用lombok声明了其set和get方法。但是在b类中怎么也get不到这个字段。
我在仔细看了之后,发现原因很简单,同事是把字段加错位置了。原来,在a类中还有一个静态内部类,他是把字段加到这个静态内部类中,因此不能在别的类中被get到。
改对位置后,则能get到值了:
涉及知识点
这里主要涉及到对内部类的认识,尤其是静态内部类。
public class InnerClass {
private static String nickName = "anan";
private String name;
private int age;
public InnerClass(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public static class Inner
{
private String heart = "zhaoli";
public String getHeart()
{
return heart;
}
public void setHeart(String h)
{
this.heart = h;
}
public void print()
{
System.out.println(InnerClass.nickName);
System.out.println(getHeart());
}
}
}
我们可以写一个测试类:
public class InnerClassTest {
public static void main(String[] args)
{
InnerClass.Inner inner = new InnerClass.Inner();
inner.print();
inner.setHeart("simple-simply");
inner.print();
}
}
这个就是从静态内部类中调用方法的方式。
后续再整理静态内部类在开发过程中的优缺点。