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 实现了 AmazonDynamoDBAsyncAsyncClient 扩展了 AmazonDynamoDBAsync,但是这段代码不起作用并抛出

com.amazonaws.services.dynamodbv2.AmazonDynamoDBAsyncClient 无法转换为 com.company.clients.AsyncClient

为什么

4

1 回答 1

13

基本上你有这样的层次结构:

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

而且您正在尝试将AmazonDynamoDBAsyncClientinstance 强制转换为AsyncClient,这是不可能的。那些是兄弟姐妹。可以这样理解:“Apple”和“Banana”都是“Fruit”,但“Apple”不是“Banana”。

于 2014-01-06T19:03:55.827 回答