内部类是在类的内部定义的另一个类,静态内部类是内部类的一种,是使用static关键字修饰的内部类,可以通过“外部类名.静态内部类名”的方式访问。
举例来说,有一个外部类OuterClass里面定义了一个静态内部类InnerClass,代码如下:
public class OuterClass { //一般类定义
static class InnerClass { //静态内部类
public void innerMethod() { //静态内部类的方法
System.out.println("This is InnerClass's Innermethod");
}
}
}
Java语言静态内部类的方法调用方式如下:
//静态内部类实例
OuterClass.InnerClass inner = new OuterClass.InnerClass(); inner.innerMethod(); //静态方法调用
如果要使用Spring容器来初始化和管理该内部类的实例,则可以在配置文件中做如下配置:
与代码使用“.”连接外部类和内部类不同,Bean的配置使用“$”来进行连接。
OuterClass.java
package com.shrimpking.code04;
/**
* @author user1
*/
public class OuterClass
{
static class InnerClass
{
public void innerMethod()
{
System.out.println("This is InnerClass`s InnerMethod");
}
}
}
Beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--静态内部类的配置方式,用 $ 连接-->
<bean id="innerObject" class="com.shrimpking.code04.OuterClass$InnerClass"/>
</beans>
OuterTest.java
package com.shrimpking.code04;
import org.junit.Test;
public class OuterTest
{
@Test
public void test()
{
//静态内部类实例
OuterClass.InnerClass innerClass= new OuterClass.InnerClass();
//静态方法调用
innerClass.innerMethod();
}
}