私はまだインターフェイスについて学んでいるので、私の質問は基本的なものかもしれません!クラスを実装して特定のレイアウトを使用するよう強制するために、インターフェイスでsetLayout()を使用できますか?
私はread a bit about interfacesでした。私が思いついたユースケースの1つは、クラスを実装して特定のレイアウトを使用するように強制することです。
例:
私はJPanel
を拡張するいくつかのクラス(ページ1、ページ2、...)を持っています。それらのすべては、コンストラクタでsetLayout(new MigLayout())
を使用してMigLayout
を使用します。 MigLayout
を設定するのを忘れた場合でも、クラスはまだ機能している可能性があります。したがって、常にすべてのクラスに対して同じレイアウトを設定することが望ましいです。
あなたのクラスでこのメソッドを使用することを忘れないように、私の考えは、インターフェイスを作成し、クラスに使用されるいくつかのメソッドを入れることです。特にsetLayout(new MigLayout())
メソッドです。
しかし、これは私にエラーを与える:
ForcedLayout testLayout = new ForcedLayout(){
{
setLayout(new MigLayout());
}};
しかし、私は中testLayout
を使用する方法を見つけることができませんでした:
Syntax error on token "setLayout", @ expected before this token
を私はまた、インターフェイスに匿名の内部クラスを使用しようとしましたクラスを実装するので、レイアウトが強制されます。
ので:
- は、それはインターフェースを介して特定のレイアウトを使用するために実装したクラスを「強制」することは可能ですか?
- このアプローチを使用することはまったく意味がありますか?すべてのクラスは、したがって、あなたが作成することができ
JPanel
を拡張しているので
にクラスに同じレイアウトを設定することは非常に良い方法を、このクラスを拡張するために、すべてを頼みます!しかし、私の質問は、インターフェイスを使用して実装クラスがこれを行うことができるかどうかです。私はより良いインターフェースを理解したい。 – hamena314
[インタフェースのデフォルトのメソッド](https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html)を使用できますが、フル・プルーフ・ソリューションではないサブクラスではオーバーライドできます – Braj
Ah、インターフェイスで 'setLayout(MigLayout migLayout)'を実行し、他のクラスに実装させることができます。メソッドの欠点はオーバーライドされないように保護されています。私はそれを受け入れることができるように答えとして投稿することができますか?これは実際に私がインターフェイスについて知りたいものです。 – hamena314