以前学的时候,没怎么看内部类,觉得这个东西很少用到,就先跳过了。现在发现,是时候拾起来了。工作中,逐步的都用到了。所以,就想写个HelloWorld内部类版。
最初想写的是:用Java实现闭包,写了半路,发现不对了,今天的代码不是闭包了。也懒着改了,先发出来吧。
先定义了一个接口:
package com.lippeng;
/**
* 随便定义一个接口,里面有个方法
*
* @author lippeng
*
*/
public interface Isayer {
public void say();
}
然后,是 HelloWorld类:
package com.lippeng;
public class HelloWorld {
// 看好了,这个东西,是HelloWorld的属性
private String word;
/**
* Constructor
*
* @param word
*/
public HelloWorld(String word) {
this.word = word;
}
private class Recorder implements Isayer {
@Override
public void say() {
// 打出 外部类的属性
System.out.println(word);
}
}
private class Recorder2 implements Isayer {
@Override
public void say() {
// 倒序打出外部类的属性
System.out.println(new StringBuffer(word).reverse().toString());
}
}
/**
* 这个方法,只是得到一个内部类对象
*
* @return
*/
public Isayer getSayer() {
return new Recorder();
}
public Isayer getReverseSayer() {
return new Recorder2();
}
}
写个类,测试一下:
package com.lippeng;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// 先创建一个对象
HelloWorld helloWorld = new HelloWorld("Hello World");
// 得到 接口:它的好处是,helloWorld对象完全可见
Isayer recorder = helloWorld.getSayer();
recorder.say();// 这里说出来的东西,来自 helloWorld 对象
// 只是这样,好处还不明显,看下面的
// 想说的是,同一个接口,同一个类内部,实现不同的功能
// 如果不是接口,是抽象类,也是一样的
Isayer reverseSayer = helloWorld.getReverseSayer();
reverseSayer.say();
}
}
要说的都在代码中,就不废话了。
分享到:
相关推荐
例如,如果类名为`HelloWorld`,则文件名为`HelloWorld.java`。Java是严格的面向对象语言,因此每个源代码文件至少包含一个公共类(public class)。 3. **公共类(Public Class)**:在Java中,`public`关键字表示...
首先,当尝试编译`javac HelloWorld`时,出现“'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件”的错误,这是因为Java Development Kit (JDK) 的环境变量没有正确设置。在Windows系统中,需要在系统...
HelloWorld.java`命令将在当前目录下创建包目录和类文件。若不指定`-d`,`.class`文件将直接生成在当前目录下。运行时,应确保类文件所在目录已添加到`CLASSPATH`或使用完整的类路径调用。 #### 增强理解:与C/C++...
这个名为 "100-ways-to-print-HelloWorld-in-java-master_helloworld_" 的项目显然是一个有趣的挑战,旨在探索使用Java语言打印 "Hello, World!" 的一百种不同方法。下面我们将深入探讨这个主题,详细介绍各种可能的...
** Velocity之HelloWorld配置详解 ** Velocity是一款Java模板引擎,它是Apache软件基金会的Jakarta项目之一,主要用于生成动态Web内容。Velocity通过将内容展示与业务逻辑分离,使得开发者可以专注于后端逻辑,而...
在学习Java类文件的过程中,我们将通过一个简单的“Hello World”示例来探索Java类文件的内部结构和编译后的字节码。Java开发者通过深入理解Java类文件的组成,能够更好地掌握Java语言的各种高级特性,比如反射机制...
"基于Java的匿名内部类分析与应用" 匿名内部类是Java语言中的一大特色,它可以在类的定义中嵌套定义另一个类。匿名内部类没有名字,所以不能用匿名类声明对象,但是可以直接用匿名类创建一个对象。 匿名内部类的...
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不定义完整类的情况下创建对象。这种类没有名字,通常用作一次性实现某个接口或继承某个类的情况,尤其是在需要简洁代码的地方。以下是对Java匿名内部...
这个"springboot的helloworld入门程序"是初学者理解并掌握SpringBoot基础的一个绝佳起点。下面我们将深入探讨SpringBoot的基本概念、核心特性以及如何创建一个简单的"Hello, World!"程序。 1. **SpringBoot简介** ...
结合【部分内容】,这部分内容并没有直接关联到"hello world hello"或"java",而是深入讲解了天文学和天体物理学中的吸积盘理论。吸积盘是围绕天体(如黑洞、中子星或恒星)旋转的高温气体盘,其理论对于理解宇宙中...
3. **编译与运行**:在命令行中,导航到`HelloWorld.java`所在的目录,使用`javac HelloWorld.java`命令进行编译,这将生成一个`HelloWorld.class`文件。接着,运行`java HelloWorld`,你将在控制台看到“Hello, ...
- 方法体内部,我们可以使用`@ResponseBody`注解返回一个简单的字符串,如"HelloWorld",或者用`ModelAndView`对象来指定视图名。 3. **视图解析**: - 视图解析器会根据控制器返回的视图名来寻找实际的HTML页面...
创建一个名为`HelloWorld`的Java类,这个类将被Spring管理: ```java package com.example; public class HelloWorld { private String message; public void setMessage(String message) { this.message ...
在我们的HelloWorld示例中,我们将看到如何使用XML配置文件或Java配置来声明和管理对象及其依赖。 接着,我们需要设置项目环境。通常,这包括添加Spring库的依赖到项目的构建工具配置(如Maven或Gradle),并创建一...
javac HelloWorld.java # 执行 java HelloWorld ``` #### 三、Java垃圾回收机制 - **垃圾回收**: 由JVM的后台线程GC自动执行,主要负责释放不再使用的对象所占用的内存空间。 - **触发条件**: 当JVM检测到内存不足...
生成HelloWorld.h文件(若提示找不到HelloWorld类文件,Java代码中不要写package) 有package时,在包所在目录下打开终端,输入命令javah -jni com.gjl.jnitest.HelloWorld (com.gjl.jnitest为包名) 生成 ...
"Android WebView 之Helloworld"这个主题将引导我们了解如何在Android应用中集成和使用WebView来展示一个简单的网页。 首先,我们需要理解WebView的基本概念。WebView是Android SDK中的一个类,它是Android系统提供...
标题中的“HelloWorld的javap -verbose HelloWorld”指的是在Java编程环境中,通过`javap`这个命令行工具来反汇编一个简单的“HelloWorld”程序,以深入理解字节码的工作原理。`javap`是Java Platform Debugger ...
- 将`HelloWorld`类声明为Spring的Bean,这通常通过在Java配置类或XML配置文件中完成。 4. **配置Spring**:配置Spring容器以管理`HelloWorld` Bean。如果是Java配置,你需要创建一个配置类,并使用`@Component`...
标题中的"Hello_java_test_"可能是指一个用于测试的Java项目或者是一个特定的Java类或方法名,这通常在开发过程中用来标识与测试相关的代码。描述中提到的"这个很好是不错的文件jar文件,我们都是这个要用的jar文件...