@hotkeysが指摘するように、moduleにはinternal
というキーワードを使用できます。私は通常、EclipseとMavenで作業しますが、これらのモジュールを作成するのは現実的ではありません。
多分、IDEAまたはGradleを持つ別のテックスタックの方が実用的です。私は決してそれらを使用しなかったので私は知らない。
もう1つの選択肢は、パッケージのすべてのクラスを1つのファイルに入れることです。これは必ずしも実用的ではない。
私にとって、package
の可視性は、その文書化価値にとって非常に有益です。私はいくつかのパッケージが残りのプロジェクトにどのような公開インタフェースを提供しているか知りたい。私は工場の実装クラスなどを隠したい。
Javaでパッケージプライベートのクラスとメソッドをハックする可能性がある場合でも、私はまだpackage
キーワードを使いたいと思います。
package com.mycompany.libraries.kotlinannotations;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@Documented
@Retention(SOURCE)
@Target({ TYPE, METHOD, CONSTRUCTOR })
/**
* Use in Kotlin code for documentation purposes.
*
* Whenever a Kotlin class or method is intended to be accesible at package level only.
*
*/
public @interface PackagePrivate {
}
それから私は、任意のKotlinプロジェクトでは、このアノテーションを使用することができます:私は何をやったか
は、単一のアノテーションを使用してプロジェクトを作成することです。
私がまだ取り上げていない2番目のステップは、ある時点でMaven(または他のビルドツール)を使ってこれを強制するPMDルールを作成することです。私のIDEでpmdプラグインを使ってルールの違反を見ることができます。(独自のモジュールでIE)Kotlinはまだpmdでサポートされている言語の一つではない瞬間
。しかし、PMDは積極的に開発されており、Kotlinは人気が高まっているため、ある時点で開発される可能性があります。それは私の最高の推測です。
出典
2017-08-31 20:24:14
DPM
まあ、私は内部を好きですが、私たちは、誰かがモジュール性に違反するという非常に決定された後、すべての場合...しかし、私は決して誰かがコードを使用して、同じパッケージを作成しているのを見java9にはるかに優れた固定ことがあります彼は必要に応じてコードを貼り付けてコピーします...私がここで気にしているのは使いやすさです。ちょうど1つのファイルにコードのトンを入れているだけでは、私は実際に見た - と - そのことをダムです... – vach
@vach。いくつかのライブラリは、あなたのユースケースに不満を感じています(良い練習ではありません) – Lovis
今、私はJavaプロジェクトをkotlinに移行していますが、私は可視性が非常に高く、tipicalyで構成されています4-5クラスのうちの1つだけが外界に見えるクラスです...今、kotlinでは、同じファイルにすべてを入れない限り、同じ可視性を持つオプションはありません...正しく理解するのか、それとも他のものがありますか私は知らないアプローチ? – vach