21xrx.com
2024-12-23 02:46:37 Monday
登录
文章检索 我的文章 写文章
Java内部类详解:使用场景及示例代码
2023-06-12 06:25:28 深夜i     --     --
Java 内部类 静态内部类 非静态内部类 封装工具类 访问外部类属性

内部类是Java中一个十分有用的特性,其可以让我们在一个类的内部定义另一个类。使用内部类可以使我们的代码更加优美、简洁,同时也可以帮助我们更好地组织代码。本篇文章将详细介绍Java内部类的使用场景及示例代码。

在Java中,内部类分为静态内部类和非静态内部类。静态内部类可以看作是一个独立的类,而非静态内部类则依赖于外部类的实例存在。下面分别介绍一下它们的使用场景及示例代码。

1. 静态内部类的使用场景

静态内部类可以独立于外部类进行实例化,因此常用于以下情况:

- 封装工具类:我们可以将一些通用的工具方法封装在静态内部类中,这样可以让代码更加清晰易懂。

下面是一个封装工具类的示例代码:


public class StringUtils {

  private StringUtils() {} // 防止外部实例化

  public static final class Builder {

    private final StringBuilder builder = new StringBuilder();

    public Builder appendln(Object obj) {

      builder.append(obj);

      builder.append(System.lineSeparator());

      return this;

    }

    public String build() {

      return builder.toString();

    }

  }

  public static Builder newBuilder() {

    return new Builder();

  }

}

在这个示例代码中,我们定义了一个StringUtils类,其中包含一个静态内部类Builder。Builder类封装了一个StringBuilder对象,并定义了appendln和build两个方法。

在外部类中,我们可以通过调用StringUtils.newBuilder()方法来创建Builder实例,然后调用其appendln方法添加数据,最后调用build方法获取最终的结果。

2. 非静态内部类的使用场景

非静态内部类的实例化依赖于外部类的实例,因此常用于以下情况:

- 访问外部类的属性和方法:非静态内部类可以访问外部类的所有属性和方法,包括私有属性和方法。

下面是一个访问外部类属性和方法的示例代码:


public class Outer {

  private final String name = "outer";

  public void print() {

    Inner inner = new Inner();

    inner.print();

  }

  private class Inner {

    public void print() {

      System.out.println(name);

    }

  }

}

在这个示例代码中,我们定义了一个Outer类和一个非静态内部类Inner。在Inner类中,我们可以直接访问外部类的私有属性name,并在print方法中打印出来。

在外部类中,我们通过调用print方法来创建Inner实例,并调用其print方法输出name属性的值。

总结

本篇文章介绍了Java内部类的使用场景及示例代码。静态内部类常用于封装工具类,而非静态内部类则常用于访问外部类的属性和方法。使用内部类可以使我们的代码更加优美、简洁,但同时也需要注意内存占用等问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章