今天,在测试interface“父类引用指向子类对象这句话”时,写了一个小小程序:
package com.gdut.liuyanming;
public class Inferface {
public class B implements A{
int a;
B(int a){
this.a = a;
}
public void get() {
System.out.println("I love you !");
}
public void gets() {
System.out.println("I love you too!");
}
int returna(int a){
return a;
}
}
public interface A{
public static final int a = 1;
public void get();
public void gets();
}
public static void main(String[] args) {
A s1=new B(2);
s1.get();
}
}
结果运行结果是:提示错误:Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Inferface is accessible. Must qualify the allocation with an enclosing instance of type Inferface (e.g. x.new A() where x is an instance of Inferface).
根据提示,没有可访问的内部类E的实例,必须分配一个合适的内部类E的实例(A s1=newB(2))我已经用new实例化了这个类,为什么?
原来我写的classB是一个动态的内部类。主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。
所以将public class B implements A写成public static class B implements A程序就能正常运行咯。
分享到:
相关推荐
1. **代码还原度**:反编译工具无法完全恢复原始的源代码,因为编译过程中可能会丢失一些注释和变量名。所以,反编译出来的代码可能与原始代码有所差异。 2. **版权问题**:在未得到授权的情况下,不应擅自反编译并...
首先,我们需要了解Java的编译过程。Java源代码(.java文件)通过Java编译器(javac)被编译成字节码(.class文件),这个字节码是平台无关的,可以在任何支持Java的环境中执行。然而,字节码是机器不可读的,因此...
Java反编译是将已编译的字节码(.class文件)转换回源代码(.java文件)的过程。在开发或维护项目时,如果原始的源代码丢失...此外,掌握基本的Java字节码知识也是有帮助的,因为这有助于理解反编译过程和可能的限制。
使用 JavaCompiler,我们可以轻松地编译 Java 源代码,并且可以更好地控制编译过程。 在实际应用中,JavaCompiler 广泛应用于 Java 动态编译中,例如,在 Web 开发中,我们可以使用 JavaCompiler 来动态编译 Java ...
Java反编译exe主要指的是将Java的字节码(.class文件)转换回源代码(.java文件)的过程。在Java编程中,源代码被编译成字节码,然后由JVM(Java虚拟机)执行。然而,出于调试、学习或者逆向工程的目的,有时我们...
Java反编译是Java开发中一个重要的辅助工具,它能够帮助开发者查看已编译的`.class`文件中的源代码,即使原始的`.java`源文件已经丢失或未被提供。这个过程对于理解类库的工作原理、逆向工程、调试、学习或者分析...
Java开发过程中,有时我们需要查看或理解已编译的Class文件中的源代码,因为Java的编译过程会将源代码转化为字节码(.class文件)。在这种情况下,反编译工具就派上了用场。本篇文章将详细介绍Java的jar反编译工具...
这款名为“咖啡图形的java反编译工具”很可能是一款界面友好的图形化工具,专为简化这个过程而设计。 Java字节码是一种中间语言,由Java编译器生成,可以在任何支持Java虚拟机(JVM)的平台上运行。然而,由于字节...
5. **分析与保存**:你可以分析反编译的源代码,但请注意,由于反编译过程的不完美性,生成的.java文件可能与原始源代码略有不同,例如变量名和注释可能会丢失。如果需要,可以通过“File”菜单选择“Save As...”...
在Java反编译过程中,有几个关键概念和技术: 1. **字节码**: Java源代码被编译成字节码,这是一种平台无关的中间语言,可以在任何支持Java的平台上运行。字节码是Java虚拟机(JVM)理解和执行的指令集。 2. **反...
Java字节码是Java源代码经过编译后的中间表示,它不包含原始的注释和变量名,这些信息在编译过程中被优化掉。反编译就是尝试从字节码中恢复出类似原始源代码的形式,虽然不能完全还原,但通常可以得到可读性较高的...
2. **代码质量**:反编译的代码可能与原始源代码略有不同,因为反编译过程不能完全恢复原始注释和代码结构。 3. **安全风险**:不要轻易反编译未知来源的.class文件,因为这可能包含恶意代码。 总的来说,Java反...
标签“JAVA 反编译 工具”进一步明确了主题,强调了该工具与Java编程语言及其反编译过程密切相关,同时也是一个工具,可能具备图形化界面或简单的命令行接口,以提高用户体验。 压缩包子文件的文件名称列表仅提供了...
反编译是将这种字节码转换为人类可读的Java源代码,这个过程可以揭示程序的逻辑结构,尽管可能无法完全恢复原始源代码的精确格式和注释。 2. **常用Java反编译工具** - **JD-GUI**:一个图形用户界面工具,可以...
为了提升你的Java水平,了解反编译过程可以帮助你理解如何从字节码层面看待代码执行。你可以通过反编译库代码来学习别人的实现技巧,或者在调试时查看编译后的结果。同时,反编译也可以帮助你分析可能的性能瓶颈,...
首先,我们需要理解Java的编译过程。当开发者编写完`.java`源代码后,会通过Java编译器(如javac)将这些源代码编译成字节码,即`.class`文件。字节码是一种中间表示,它不依赖于特定的硬件平台,可以在任何支持Java...
Java语言的编译过程是将源代码(.java文件)编译成字节码(.class文件),这个过程是单向的,因为字节码并不直接对应源代码的语法结构。然而,通过反编译技术,我们可以逆向这个过程,尽管不能完全恢复到原始的源...
在实际操作中,反编译过程可能会遇到各种挑战,如混淆代码、优化过的字节码、加密的资源等。反编译结果可能与原始源代码有所不同,特别是当应用使用了代码混淆技术时,还原出的代码可能会难以阅读和理解。然而,通过...
Java反编译是将已编译的字节码(.class文件)转换回源代码的过程,这对于理解已加密或混淆的代码,或者查看开源库的内部实现非常有用。本文将详细介绍如何使用最新的Java反编译工具及其配置过程。 首先,我们要了解...
描述中提到的"java反编译工具,将class 文件 编译成java文件",这个过程实际上不是真正的“编译”,而是“反编译”。常见的Java反编译工具有如JD-GUI、jad、 FernFlower等。例如,JD-GUI(在文件名jd-gui-1.4.0中...