`

java interface 中定义的class 是否是static 的验证

阅读更多
java interface 中定义的class 是否是static ,记得书本上有详细的介绍,由于自己也不想再翻书,突然想到用javap 分别反编译一下interface和class 中包含的class 文件。两者进行对比消除了自己的疑惑。

记录下来仅仅是为了日后拾遗。所以也不想为了分享而分享。

package com.zhi.learnj2;

public interface Food {
	class JackieZhi{
		private String name;
		public JackieZhi(String name){
			this.name = name;
		}
		public String getName() {
			return name;
		}
		@Override
		public String toString() {
			return name;
		}
	}
	enum XiaFanCai implements Food{
		
	}
}

class JTester {
	
	class JTesterInner{
		private String password;
		public JTesterInner(String password){
			this.password = password;
		}
		
		public String getPassword() {
			return password;
		}
	}
	
	public static void main(String[] args){
		//可以看出interface中的嵌套类是static 类型。的
//		Food.JackieZhi jackiezhi = new Food.JackieZhi("jackiehzi");
//		System.out.println(jackiezhi);
		
		JTesterInner jtesterinner = (new JTester()).new JTesterInner("zhi@gmail.com");
		System.out.println(jtesterinner.getPassword());
	}
	/**
class com.zhi.learnj2.JTester$JTesterInner {
  final com.zhi.learnj2.JTester this$0;  // 外部类对象的引用!
  public com.zhi.learnj2.JTester$JTesterInner(com.zhi.learnj2.JTester, java.lang.String);
  public java.lang.String getPassword();
}
	 */
}
分享到:
评论

相关推荐

    java abstract class interface之间的区别介绍

    在Java编程语言中,抽象类(abstract class)和接口(interface)都是用于实现抽象化的重要工具,它们可以帮助程序员更好地组织代码,提高代码的可复用性和扩展性。尽管二者在功能上有一些相似之处,但在实际使用中...

    abstract class和interface有什么区别?

    - `assert` 是一种简单的调试工具,用于在开发过程中验证假设是否正确。 - 断言(assertion)通常由一个布尔表达式组成,用来确保某个条件为真。 - **使用场景:** - 在开发阶段,当需要验证程序状态时使用。 - ...

    static、final、abstract和interface使用总结

    在Java编程语言中,`static`、`final`、`abstract`和`interface`是四个非常重要的关键字,它们分别代表不同的特性,用于定义类、变量和方法的行为。下面是对这些关键字的详细解释: 1. **static(静态)** - **...

    Java后台验证框架

    在商品购买过程中,需要验证商品数量是否合理等。 #### 三、问题分析 在设计验证框架时,主要面临以下几个挑战: 1. **可扩展性**:随着业务的发展,新的验证需求会不断出现,因此验证框架需要具备良好的可扩展性...

    JAVA中使用LDAP进行用户认证

    在JAVA中,可以使用JNDI(Java Naming and Directory Interface)API来访问LDAP目录。JNDI提供了一个通用的API,允许JAVA应用程序访问各种类型的目录服务,包括LDAP。 使用LDAP进行用户认证的优点包括: 1. 可靠性...

    javaAnnotation[定义].pdf

    Java Annotation,也称为注解,是Java编程语言中的一种元数据,它提供了在代码中附加信息的方式,这些信息可以被编译器、JVM或工具在编译时或运行时处理。注解不会直接影响程序的运行,但可以用于代码分析、验证、...

    注解+反射实现自定义验证工具,可实现业务校验,字段多种校验

    本文介绍了一种利用Java中的注解和反射技术来实现自定义验证工具的方法,该方法可以极大地提高代码的灵活性和可维护性。 #### 二、自定义验证工具设计思路 ##### 2.1 总体设计 本验证工具的核心思想是通过定义一...

    Java注解.pdf

    Java注解是一种特殊的注释,它们以`@注释名`的形式出现在代码中,用于向编译器或运行时环境传递额外的信息。注解不会改变程序的行为,但它们可以被编译器、IDE或其他工具用来生成文档、执行编译时检查或进行其他形式...

    C++库封装JNI接口-实现java调用c++

    6. **测试和调试**:在Java程序中调用本地方法,验证C++代码是否正确工作。可能需要对JNI接口进行调试,因为错误可能出现在Java和C++之间的边界。 总结,C++库封装JNI接口实现Java调用C++涉及的主要步骤包括:声明...

    java操作题.pdf

    1. 定义接口:在 Java 中,可以使用 `interface` 关键字定义一个接口,例如 `public interface ShapeArea { ... }`。 2. 实现接口:类可以实现接口,例如 `public class MyRectangle implements ShapeArea { ... }`...

    JAVA编程指南JAVA编程指南.doc

    JVM是一个软件实现的计算机系统,它可以解释并执行存储在.class文件中的字节码,确保Java程序在不同的硬件平台上都能运行,这就是Java的跨平台特性。Java程序的执行流程包括编译(将源代码编译成字节码)、类加载...

    Java中的动态代理模式.doc

    ### Java中的动态代理模式 #### 一、动态代理的基本概念 动态代理是一种设计模式,它允许程序员在运行时创建一个接口的实现类实例,而无需提前定义这些实现类。这种模式在很多框架中都有应用,比如Spring框架中的...

    Java泛型定义与用法实例详解

    Java泛型定义与用法实例详解 Java泛型是Java语言中的一种重要机制,用于在编译期检查类型安全,避免在运行期引发ClassCastException。泛型的引入使得Java语言更加灵活和强大,本文将详细介绍Java泛型的定义、原理、...

    java自定义注解学习范例

    这篇学习范例主要涵盖了如何在Java中定义、使用和处理自定义注解。 首先,我们来看自定义注解的定义。在Java中,注解以`@`符号开头,后面跟着注解的名称。自定义注解的定义类似于接口,但使用`@interface`关键字。...

    java通过LDAP验证Active Directory服务

    为了通过Java实现对Active Directory的验证,我们可以使用JNDI API(Java Naming and Directory Interface),它提供了与不同目录服务(如LDAP)交互的接口。 下面是一段示例代码,展示了如何使用Java进行验证: `...

    java面试宝典

    42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以...

    Java语法大全史上最全语法

    字节码文件被加载到JVM中进行验证(主要是重复静态类型检查),然后可以选择解释执行或编译为本地机器码再执行。这一过程保证了Java程序的跨平台性和安全性。 ### Java关键字 Java提供了大量的关键字用于定义语言...

    深入理解Java虚拟机笔记(带目录).docx

    深入理解 Java 虚拟机笔记 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责解释和执行 Java 字节码。下面是 Java 虚拟机相关的知识...Java 内存模型(JMM)是 Java 语言的内存模型,用于定义 Java 程序的内存行为。

    C++与Java混合编程.docx

    5. **测试调用**:在Java程序中调用`WinFile.GetFilesFromDir()`方法,并验证结果是否符合预期。 #### 五、C++调用Java示例 接下来介绍如何从C++代码中调用Java方法: 1. **定义Java类**:在`%SRC%/cpp-java`目录...

Global site tag (gtag.js) - Google Analytics