簡體   English   中英

通過接口進行Java上傳和下傳

[英]Java upcasting and downcasting by interfaces

這可能是一個愚蠢的問題,但我需要知道。 我有一個界面作為

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

為什么呢?

基本上你有這樣的層次結構:

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

並且您正在嘗試將AmazonDynamoDBAsyncClient實例轉換為AsyncClient ,這是不可能的。 那些是兄弟姐妹。 這樣說:“蘋果”和“香蕉”都是“水果”,但“蘋果”不是“香蕉”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM