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;
}