1. ホーム

[解決済み】Java。1つのファイルに複数のクラス宣言がある

2022-04-03 13:50:08

質問

Javaでは、1つのファイルに複数のトップレベルクラスを定義することができますが、そのうちの少なくとも1つはpublicである必要があります( JLS §7.6 ). 例として以下をご覧ください。

  1. このテクニックの整理された名前はありますか(例として inner , nested , anonymous )?

  2. JLSでは、システム かもしれない これらのセカンダリクラスが referred to by code in other compilation units of the package 例えば、package-privateとして扱われないなどです。 これは本当にJavaの実装間で変わるものなのでしょうか?

例:PublicClass.java。

package com.example.multiple;

public class PublicClass {
    PrivateImpl impl = new PrivateImpl();
}

class PrivateImpl {
    int implementationData;
}

解決方法は?

このテクニック(1つのソースファイルに複数のトップレベルクラスを含む)に私が提案する名前は "mess"です。真面目な話、良いアイデアだとは思いません。私ならこの状況では、代わりにネストされた型を使いますね。そうすれば、それがどのソースファイルにあるのかを予測するのはまだ簡単です。しかし、このアプローチに正式な用語があるとは思っていません。

しかし、そもそもこのようなことをしないようにすれば、気にする必要はないでしょう :)