2

これはおそらくばかげた質問ですが、知る必要があります。私は次のようなインターフェースを持っています

import com.amazonaws.services.dynamodbv2.AmazonDynamoDBAsync;

public interface AsyncClient extends AmazonDynamoDBAsync{

}

そして、メソッドを持つClientCreatorクラスがあります

import com.company.clients.AsyncClient;
public class ClientCreator {
        public static AsyncClient getAsyncClient() throws FileNotFoundException, IllegalArgumentException, IOException{
            AmazonDynamoDBAsync client = new AmazonDynamoDBAsyncClient(getCredentials());
            client.setRegion(getRegion());
            return (AsyncClient)client;
        }
        .
        .
        .

ここでAmazonDynamoDBAsyncClient は AmazonDynamoDBAsync を実装しAsyncClient は AmazonDynamoDBAsync を拡張しますが、このコードは機能せず、スローされます

com.amazonaws.services.dynamodbv2.AmazonDynamoDBAsyncClient を com.company.clients.AsyncClient にキャストできない

しかし、なぜですか?

4

1 に答える 1

13

基本的に、次のような階層があります。

         AmazonDynamoDBAsync 
                  ^
                  |
     -----------------------------
     |                           |
AmazonDynamoDBAsyncClient   AsyncClient 

AmazonDynamoDBAsyncClientインスタンスをにキャストしようとしていますがAsyncClient、これは不可能です。それらは兄弟です。「リンゴ」と「バナナ」はどちらも「フルーツ」ですが、「リンゴ」は「バナナ」ではありません。

于 2014-01-06T19:03:55.827 に答える