簡體   English   中英

java - 如何跨多個類傳遞相同的對象java?

[英]How do I pass the same object across multiple classes java?

我有一個對象類,我想在多個類中使用它。 基本上,我希望將此對象用作我可以將信息轉儲到其中然后解壓縮該信息的地方。

假設例如我有 5 個班級

Class1 將返回一個框對象。 --> Foo(object) 將存儲盒子

Class2 將返回一個蛇對象。 --> Foo(object) 將存儲蛇

Class3 將返回一個圓對象。 --> Foo(object) 將存儲圓。

Class4 將返回一個食物對象。 --> Foo(object) 將存儲食物

Class5 將返回一個盒子、蛇、圓圈和食物對象。 --> 解壓 Foo(object) 以返回盒子、蛇、圓圈和食物對象。

我怎樣才能做到這一點? 如果可能,您能否為此類場景提供一些示例代碼? 如果需要更多說明,請告訴我。

你能行的 :

  1. 創建一個類,您將創建您的對象作為它的一個實例。
  2. 使這個類從 Serializable 類擴展(允許你凍結和凍結,你反對)
  3. 使用意圖在您的活動之間導航並將您的對象添加為意圖數據。

編輯
這就是活動的工作!
第二種方式

如果你讓你的對象從 Sharedpreferences 擴展的類中調用它的數據,比如

從類 A 創建一個對象,其構造函數使用 Sharedpreferences 類來填充對象數據

您可以使用dump方法創建一個interface ,並使用您打算使用的所有類來實現該interface 如果您的interface稱為Dumper ,您將需要在您打算使用它的所有類中實現它,如果可能的話。 如果不是,例如,類EvilGuy不受您的控制,您可以簡單地創建一個EvilGuyWrapper class ,使用EvilGuy的成員並實現Dumper

有點像收藏家,對吧?

創建一個將累積對象的類:

public class EventCollector {
    private List<Object> events = new ArrayList<>();
    public void add(Object e) {
        events.add(e);
    }

}

將 EventCollector 實例傳遞給您的盒子、蛇、食物、圓形對象:

public class Circle {
     private EventCollector ec;
     public setEventCollector(EventCollector ec) {
         this.ec = ec;
     }

     public void pack() {
         ec.add(this);
     }
}

對食物、盒子、蛇等做同樣的事情......對所有這些都調用 pack 方法。

最后,所有對象都將在 EventCollectior 中。

使用 Java 時請記住,該語言非常傾向於在編譯時提供可用信息。

您想要做的本質上是在運行時確定這一點,並且您只能通過返回對象並將其轉換為您當時期望的類來做到這一點。

在您的情況下,您需要擁有要存儲的所有不同類型的通用超類、所有類型實現的接口或僅使用 Object. 您可以將其存儲在此的任何集合中,例如 ArrayList。

然后當您取回對象時,您需要使用“instanceof”來找出您正在查看的內容,然后將其轉換為適當的類型。

請注意,這很乏味且容易出錯,您可能需要重新考慮和學習泛型。

暫無
暫無

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

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