Java中静态内部类

本文介绍了Java中的静态内部类和嵌套类的概念,通过代码示例展示了如何使用和调用。特别提到在JAXB场景下,必须使用静态内部类以避免启动时的非法注解异常。
摘要由CSDN通过智能技术生成

目录

一、术语解释

二、代码实战

2.1 外部类、静态内部类

2.2 调用测试

三、注意事项


一、术语解释

静态内部类,就是static修饰的内部类

它是内部类中一个比较特殊的情况,Java文档中是这样描述静态内部类的:一旦内部类使用static修饰,那么此时这个内部类就升级为顶级类。

也就是说,除了写在一个类的内部以外,静态内部类具备所有外部类的特性。

静态内部类,又是嵌套类

嵌套类的定义:如果一个类是静态的并定义在另一个类内部,那么它被称为嵌套类。

嵌套类与它的外部类相比,更像是一个独立的实体。它可以被当作一个顶层类来使用,只不过它的命名空间属于它的外部类。

二、代码实战

2.1 外部类、静态内部类

public class Outer1 {
    private String name;

    private static int staticField = 20;

    // 在同一个包内调用,不需要public修饰
    // 在不同包内调用,需要public修饰
    public static class Inner {

        public void info(){
            System.out.println("static Inner method");
            System.out.println(staticField);
        }

    }

}

2.2 调用测试

public class InnerTest {

    public static void main(String[] args) {
        // 结果:
        // static Inner method
        // 20
        testStaticInnerClass();
    }

    // 调用静态内部类
    //
    private static void testStaticInnerClass() {

        // 实例化方式
        Outer1.Inner inner = new Outer1.Inner();

        inner.info();
    }

}

三、注意事项

如果使用 JAXB(Java Architecture for XML Binding,Java类与XML结构相互映射) ,在使用内部类的时候,需要使用静态内部类。

我的应用场景中,如果用了内部类,但没有使用静态内部类,在项目启动时,会出现下面的异常:

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
……Rep$DeliveryData is a non-static inner class, and JAXB can't handle those.
        this problem is related to the following location:


我是程序员娟娟,

致力将工作中遇到的问题和解决方案记录下来,

分享给更多需要的同行。

如果对你有帮助,不妨点个关注吧!

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值