通过接口进行Java上传和下传

时间:2014-01-06 19:00:35

标签: java interface upcasting

这可能是一个愚蠢的问题,但我需要知道。 我有一个界面

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

为什么

1 个答案:

答案 0 :(得分:12)

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

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

您正在尝试将AmazonDynamoDBAsyncClient实例投射到AsyncClient,这是不可能的。那些是兄弟姐妹。这样说:“苹果”和“香蕉”都是“水果”,但“苹果”不是“香蕉”。