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)都是用于实现抽象化的重要工具,它们可以帮助程序员更好地组织代码,提高代码的可复用性和扩展性。尽管二者在功能上有一些相似之处,但在实际使用中...
- `assert` 是一种简单的调试工具,用于在开发过程中验证假设是否正确。 - 断言(assertion)通常由一个布尔表达式组成,用来确保某个条件为真。 - **使用场景:** - 在开发阶段,当需要验证程序状态时使用。 - ...
在Java编程语言中,`static`、`final`、`abstract`和`interface`是四个非常重要的关键字,它们分别代表不同的特性,用于定义类、变量和方法的行为。下面是对这些关键字的详细解释: 1. **static(静态)** - **...
在商品购买过程中,需要验证商品数量是否合理等。 #### 三、问题分析 在设计验证框架时,主要面临以下几个挑战: 1. **可扩展性**:随着业务的发展,新的验证需求会不断出现,因此验证框架需要具备良好的可扩展性...
在JAVA中,可以使用JNDI(Java Naming and Directory Interface)API来访问LDAP目录。JNDI提供了一个通用的API,允许JAVA应用程序访问各种类型的目录服务,包括LDAP。 使用LDAP进行用户认证的优点包括: 1. 可靠性...
Java Annotation,也称为注解,是Java编程语言中的一种元数据,它提供了在代码中附加信息的方式,这些信息可以被编译器、JVM或工具在编译时或运行时处理。注解不会直接影响程序的运行,但可以用于代码分析、验证、...
本文介绍了一种利用Java中的注解和反射技术来实现自定义验证工具的方法,该方法可以极大地提高代码的灵活性和可维护性。 #### 二、自定义验证工具设计思路 ##### 2.1 总体设计 本验证工具的核心思想是通过定义一...
Java注解是一种特殊的注释,它们以`@注释名`的形式出现在代码中,用于向编译器或运行时环境传递额外的信息。注解不会改变程序的行为,但它们可以被编译器、IDE或其他工具用来生成文档、执行编译时检查或进行其他形式...
6. **测试和调试**:在Java程序中调用本地方法,验证C++代码是否正确工作。可能需要对JNI接口进行调试,因为错误可能出现在Java和C++之间的边界。 总结,C++库封装JNI接口实现Java调用C++涉及的主要步骤包括:声明...
1. 定义接口:在 Java 中,可以使用 `interface` 关键字定义一个接口,例如 `public interface ShapeArea { ... }`。 2. 实现接口:类可以实现接口,例如 `public class MyRectangle implements ShapeArea { ... }`...
JVM是一个软件实现的计算机系统,它可以解释并执行存储在.class文件中的字节码,确保Java程序在不同的硬件平台上都能运行,这就是Java的跨平台特性。Java程序的执行流程包括编译(将源代码编译成字节码)、类加载...
### Java中的动态代理模式 #### 一、动态代理的基本概念 动态代理是一种设计模式,它允许程序员在运行时创建一个接口的实现类实例,而无需提前定义这些实现类。这种模式在很多框架中都有应用,比如Spring框架中的...
Java泛型定义与用法实例详解 Java泛型是Java语言中的一种重要机制,用于在编译期检查类型安全,避免在运行期引发ClassCastException。泛型的引入使得Java语言更加灵活和强大,本文将详细介绍Java泛型的定义、原理、...
这篇学习范例主要涵盖了如何在Java中定义、使用和处理自定义注解。 首先,我们来看自定义注解的定义。在Java中,注解以`@`符号开头,后面跟着注解的名称。自定义注解的定义类似于接口,但使用`@interface`关键字。...
为了通过Java实现对Active Directory的验证,我们可以使用JNDI API(Java Naming and Directory Interface),它提供了与不同目录服务(如LDAP)交互的接口。 下面是一段示例代码,展示了如何使用Java进行验证: `...
42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以...
字节码文件被加载到JVM中进行验证(主要是重复静态类型检查),然后可以选择解释执行或编译为本地机器码再执行。这一过程保证了Java程序的跨平台性和安全性。 ### Java关键字 Java提供了大量的关键字用于定义语言...
深入理解 Java 虚拟机笔记 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责解释和执行 Java 字节码。下面是 Java 虚拟机相关的知识...Java 内存模型(JMM)是 Java 语言的内存模型,用于定义 Java 程序的内存行为。
5. **测试调用**:在Java程序中调用`WinFile.GetFilesFromDir()`方法,并验证结果是否符合预期。 #### 五、C++调用Java示例 接下来介绍如何从C++代码中调用Java方法: 1. **定义Java类**:在`%SRC%/cpp-java`目录...