Java内部类的全限定名规律代码示例

 更新时间:2017年12月21日 08:44:20   作者:三向板砖  
这篇文章主要介绍了Java内部类的全限定名规律代码示例,具有一定借鉴价值,需要的朋友可以参考下。

简述:

由于最近遇到不少需要反射的类,而其中不乏内部类,在此总结一下内部类的全限定名的规律。

成员内部类

测试结果表明,无论成员内部类是否为静态,其全限定名都使用如下命名方法:

包名.外部类名$内部类名

测试代码:

package com.test;
public class InnerClassTest {
	static class StaticInner{
	}
	class Inner{
	}
	public static void main(String[] args) {
		StaticInner si = new StaticInner();
		Inner in = new InnerClassTest().new Inner();
		System.out.println(si.getClass());
		System.out.println(in.getClass());
	}
}

打印结果:

classcom.test.InnerClassTest$StaticInner
classcom.test.InnerClassTest$Inner

匿名内部类

匿名内部类的全限定名满足如下规律:

包名.外部类名$由1开始的正整数-按照类装载顺序依次排列

测试代码

package com.test;
public class InnerClassTest {
	static Object staticAnClass = new Object(){
	}
	;
	static Object staticBlockAnClass;
	static {
		staticBlockAnClass = new Object(){
		}
		;
	}
	Object anClass = new Object(){
	}
	;
	Object blockAnClass;
	{
		blockAnClass = new Object(){
		}
		;
	}
	public static void main(String[] args) {
		InnerClassTest functionClass = new InnerClassTest(){
		}
		;
		System.out.println(staticAnClass.getClass());
		System.out.println(staticBlockAnClass.getClass());
		InnerClassTest test = new InnerClassTest();
		System.out.println(test.anClass.getClass());
		System.out.println(test.blockAnClass.getClass());
		System.out.println(functionClass.getClass());
	}
}

打印结果:
class com.test.InnerClassTest$1
class com.test.InnerClassTest$2
class com.test.InnerClassTest$3
class com.test.InnerClassTest$4
class com.test.InnerClassTest$5

局部内部类

局部内部类全限定名使用如下命名方式:

包名.外部类名$由1开始的正整数后跟局部类名-其中数字部分是局部类在外部类上下文出现的先后顺序

测试代码

package com.test;
public class InnerClassTest {
	public static void main(String[] args) {
		functionA();
		functionB();
	}
	public static void functionA() {
		class Inner {
		}
		;
		System.out.println(new Inner().getClass());
	}
	public static void functionB() {
		class Inner {
		}
		;
		System.out.println(new Inner().getClass());
	}
}

上例打印结果: 

classcom.test.InnerClassTest$1Inner 
classcom.test.InnerClassTest$2Inner 
在测试代码的基础上在交换main中functionA、B位置后的结果: 
classcom.test.InnerClassTest$2Inner 
classcom.test.InnerClassTest$1Inner 
在测试代码基础上交换functionA、B声明位置的结果: 
classcom.test.InnerClassTest$2Inner 
classcom.test.InnerClassTest$1Inner

总结

以上就是本文关于Java内部类的全限定名规律代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • SpringMVC获取请求参数实现方法介绍

    SpringMVC获取请求参数实现方法介绍

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Spring MVC 角色划分清晰,分工明细,这篇文章主要介绍了SpringMVC实现获取请求参数方法
    2022-11-11
  • Java实现驼峰、下划线互转的方法

    Java实现驼峰、下划线互转的方法

    这篇文章主要介绍了Java实现驼峰、下划线互转的示例代码,主要有使用 Guava 实现和自定义代码转,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • SpringCloud Hystrix熔断器使用方法介绍

    SpringCloud Hystrix熔断器使用方法介绍

    通过hystrix可以解决雪崩效应问题,它提供了资源隔离、降级机制、融断、缓存等功能。接下来通过本文给大家分享SpringCloud集成Hystrix熔断,感兴趣的朋友一起看看吧
    2023-03-03
  • Spring的Bean生命周期之BeanDefinition详解

    Spring的Bean生命周期之BeanDefinition详解

    这篇文章主要介绍了Spring的Bean生命周期之BeanDefinition详解,在spring bean创建过程 依赖 BeanDefinition 中的信息处理bean的生产,BeanDefinition 是 Spring Framework 中定义 Bean 的配置元信息接口,需要的朋友可以参考下
    2023-12-12
  • SpringBoot之瘦身部署的详细步骤

    SpringBoot之瘦身部署的详细步骤

    本篇文章主要介绍了SpringBoot之瘦身部署的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • SpringBoot使用AOP实现防重复提交功能

    SpringBoot使用AOP实现防重复提交功能

    这篇文章主要为大家详细介绍了SpringBoot如何使用AOP实现防重复提交功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Java深入理解代码块的使用细节

    Java深入理解代码块的使用细节

    所谓代码块是指用"{}"括起来的一段代码,根据其位置和声明的不同,可以分为普通代码块、构造块、静态块、和同步代码块。如果在代码块前加上 synchronized关键字,则此代码块就成为同步代码块
    2022-05-05
  • Java中的@Builder注解问题详解

    Java中的@Builder注解问题详解

    这篇文章主要介绍了Java中的@Builder注解详解,@Builder 注解的其中一个大坑会导致默认值失效,这是使用此注解出现的一个问题,总的来说,不推荐再使用 @Builder 注解,接下来讲重点介绍其原因和替代方案,需要的朋友可以参考下
    2023-10-10
  • java Socket简易聊天工具

    java Socket简易聊天工具

    这篇文章主要为大家详细介绍了java Socket简易聊天工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • java编写属于自己的线程池

    java编写属于自己的线程池

    这篇文章主要为大家详细介绍了java编写属于自己的线程池,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论