Flex 4 SDK でコンパイルしている純粋な Action Script 3 プロジェクトがあります。必要に応じて、compc、mxmlc、および asdoc を自動的に呼び出す標準の Makefile があります。私の Mac OS X 10.4 以降のコンピュータでは、プロジェクトはエラーや警告なしで正常にコンパイルされています。ただし、Windows XP (Cygwin がインストールされている) で開発している同僚と共有すると、「互換性のない署名」エラーの非常に大きなリストが表示されます。なぜ彼はそれらのエラーを受け取っているのですか? 署名に互換性がないようです。
注: 問題の署名は「オリジナル」と「エクスポート」であり、次のように使用されます。
パブリック インターフェイス AbstractX { 関数 original() : オブジェクト; 関数 export() : オブジェクト }
public クラス ImportX は AbstractX を実装します { public ImportX(obj : オブジェクト) { _loadedobj = obj; _exportobj = obj.export(); } public static function wrap(obj : Object) : AbstractX { var 結果: AbstractX = null; if ( obj != null ){ if ( obj は AbstractX ){ 結果 = obj as AbstractX; }else if ( obj.original() is AbstractX ){ 結果 = obj.original() as AbstractX; }そうしないと{ 結果 = 新しい ImportX(obj); } } 結果を返します。 } public function original() : オブジェクト { _loadedobj を返します。 } public function export() : オブジェクト { _exportobj を返します。 } プライベート var _loadedobj : オブジェクト = null; プライベート var _exportobj : オブジェクト = null; }
public class X は AbstractX を実装します { public function X() : void { //... } public function original() : オブジェクト { これを返します。 } public function export() : オブジェクト { if ( ! _export ){ _export = 新しい ExportX(これ); } _エクスポートを返します。 } プライベート var _export : オブジェクト = null; }