Java编程中内部类、匿名类、Lambda表达式及包的使用
立即解锁
发布时间: 2025-08-18 02:33:39 阅读量: 1 订阅数: 8 

### Java编程中内部类、匿名类、Lambda表达式及包的使用
#### 内部类的使用
在Java编程里,内部类是一种强大的工具。以一个使用`Swing`包中`Timer`类的应用为例,该应用能在控制台以一秒为间隔显示“Tick...”和“Tock...”。下面是将`Ticker`类实现为内部类的代码:
```java
import java.awt.event.*;
import javax.swing.*;
public class TickTockInner
{
private String tickMessage = "Tick...";
private String tockMessage = "Tock...";
public static void main(String[] args)
{
TickTockInner t = new TickTockInner();
t.go();
}
private void go()
{
// create a timer that calls the Ticker class
// at one second intervals
Timer t = new Timer(1000, new Ticker());
t.start();
// display a message box to prevent the
// program from ending immediately
JOptionPane.showMessageDialog(null,
"Click OK to exit program");
System.exit(0);
}
class Ticker implements ActionListener
{
private boolean tick = true;
public void actionPerformed(ActionEvent event)
{
if (tick)
{
System.out.println(tickMessage);
}
else
{
System.out.println(tockMessage);
}
tick = !tick;
}
}
}
```
这个程序有以下几个要点:
1. `tickMessage`和`tockMessage`是外部类的`String`类型变量,内部类`Ticker`可直接访问这些字段。
2. 由于内部类只能被实例化对象使用,所以在`static`的`main`方法中,先创建`TickTockInner`类的实例,再调用其实例方法`go`。
3. `go`方法里创建了一个`Timer`类的实例,时间间隔设为1000毫秒(即1秒),并将`ActionListener`设为内部类`Ticker`的新实例。
4. 使用`JOptionPane`类显示对话框,确保定时器有运行的机会,用户点击“OK”后应用程序结束。
5. `System.exit(0)`用于立即关闭Java虚拟机,虽非必需,但不使用的话,点击“OK”后定时器还会运行几秒。
#### 静态内部类
静态内部类和普通内部类类似,但不需要外部类的实例。其基本形式如下:
```java
class outerClassName
{
private static class innerClassName
{
// body of inner class
}
}
```
和静态方法一样,静态内部类不能访问外部类的非静态字段和方法,但可以访问静态字段和方法。下面是使用静态内部类的“Tick Tock”应用代码:
```java
import java.awt.event.*;
import javax.swing.*;
public class TickTockStatic
{
private static String tickMessage = "Tick...";
private static String tockMessage = "Tock...";
public static void main(String[] args)
{
TickTockStatic t = new TickTockStatic();
t.go();
}
private void go()
{
// create a timer that calls the Ticker class
// at one second intervals
Timer t = new Timer(1000, new Ticker());
t.start();
// display a message box to prevent the
// program from ending immediately
JOptionPane.showMessageDialog(null,
"Click OK to exit program");
System.exit(0);
}
static class Ticker implements ActionListener
{
private boolean tick = true;
public void actionPerformed(
ActionEvent event)
{
if (tick)
{
```
0
0
复制全文
相关推荐









