直列化では、直列化したいクラスをSerializableインタフェースを実装する必要があります。それ以外の場合は、NotSerializableExceptionがスローされます。 Javaのさまざまな機能には、他にもたくさんの例があります。今、私はカスタムクラスとインターフェイスでそのようなコントロールをどのように持ち込むかを知りたいだけです。エージェントと呼ばれるインターフェースがあります。多くの異なる種類のエージェントが存在する可能性があり、それらのすべてがエージェントインタフェースを実装する必要があります。私はNodeというクラスも持っています。ノードはエージェントを作成します。エージェントが常にエージェントのインターフェイスを実装するような状況では、どうしてこのような状況でコントロールを導入するのですか。それ以外の場合は例外がスローされます。私は少し曖昧に聞こえるかもしれませんが、誰かが一般的なアイデアを私に提供できる場合は、必要に応じて詳細を提供することができます。制御されたインタフェースの実装
1
A
答えて
3
エージェントを使用するNodeメソッドがある場合は、その引数をAgentにする必要があります。
interface Node {
void method(Agent agent); // must be an Agent.
Agent returnAgent(); // must return an Agent.
}
シリアル化は特殊なケースです。これは、直列化可能なすべての型が直列化可能であるわけではないためです。 int []のような組み込み型はシリアライズ可能ですが、シリアライズ可能は実装されていません。このタイプのチェックはコンパイラでは実行できず、実行時にのみ行うことができます。
0
ノードがエージェントを作成する前にエージェントがインタフェースを実装しているかどうかを確認できます。
public class CheckForInterface
{
public static void main(String[] args) throws ClassNotFoundException
{
Class cl = (Class)Class.forName("TestImpl");
Class[] itfs = cl.getInterfaces();
for(Class c : itfs)
{
System.out.println(c);
}
}
}
import java.io.Serializable;
public class TestImpl implements Serializable
{
public TestImpl()
{
}
}
これは出力します。ここで、例外をスローするようにしたjava.io.Serializable
関連する問題
- 1. インタフェースで宣言されたオーバーライドメソッドの実装
- 2. 実装ネストされた汎用的なインタフェース
- 3. インタフェース実装のための「略称」ショートカット?
- 4. インタフェースの実装の指定
- 5. インタフェースの実装方法は
- 6. バージョンSimulinkライブラリの制御されたモデル
- 7. インタフェースを実装した素数シーケンス(Java)
- 8. Javaリフレクション:実装汎用インタフェース
- 9. Wordpress - カスタムプラグインから制御されたカスタムメタタグ
- 10. マウスで制御されたシェイプ描画
- 11. 差別化されたアクセス制御。ベストプラクティス
- 12. 値が変更された制御されたページの再ロード
- 13. urlllib2.urlopenのタイムアウト制御を実装する方法
- 14. istoreカタログでユーザーレベルのアクセス制御を実装する方法は?
- 15. Grailsでパーミッションベースのアクセス制御を実装する方法は?
- 16. ロールベースのアクセス制御を実装する方法Java/MySql?
- 17. 明示的インタフェース実装への暗黙インターフェイス実装のリファクタリング
- 18. anglejsディレクティブの実行時制御のイベントがトリガーされない
- 19. 行単位でデータベースアクセス制御を実装する方法
- 20. C#共分散の実装共通インタフェース
- 21. 列挙は、その実装インタフェース
- 22. PHPで制限されたファイルアクセスを実装する方法は?
- 23. 制約のある抽象クラスへのインタフェースの実装方法は?
- 24. 順序を制御するインターセプタが実行される
- 25. インタフェースを実装しているラムダ
- 26. ASP .Netリピータ制御出力の高さを制御する
- 27. Mefは、実行時に指定されたインタフェースを実装するすべての型をインポートします。
- 28. Goでインタフェース変数がどのように実装されていますか?
- 29. インタフェースへのAutomapperマッピング:「メソッドが実装されていません」例外
- 30. シリアル化されたASP.Net Ajaxオブジェクトのプロパティ名の制御
とのインタフェース? – aps
コンパイラが無効な型を使用しないようにするため、例外をスローする必要はありません。 –
あなたのソリューションは私のものよりもはるかに優れています。はるかにエレガント。 –