簡體   English   中英

如何獲取 class 的類型以用作方法參數?

[英]How can I get the type of a class to use as a method parameter?

我有以下 class:

public abstract class A<T extends Event> {
  void onEvent(T event);
}

和一個Class<? extends Event> clazz Class<? extends Event> clazz object。如何使用與我的 class object 相同的泛型類型參數創建A的匿名子類? 換句話說,如何從我的 class object 獲取類型並將其傳遞給A的新子類?
是這樣的:

new A<clazz.getType()>() {
  @Override
  public void onEvent(clazz.getType() event) {}
}

Java 是一種編譯語言,因此您不能動態更改 class 類型,因此我們必須定義 if 塊以根據數據更改類型。

您的主要Event class:

public class Event {}

A class 得到class的類型

public abstract class A<T extends Event> {
    void onEvent(T t){};
}

樣本繼承 class

public class Sample extends Event {}

簡單實現

Sample sample = new Sample();

if (sample instanceof Sample) {

    A<Sample> a = new A<Sample>() {

        @Override
        public void onEvent(Sample t) {
            System.out.println(t.toString());
        }
    };

    // Simple implementation
    a.onEvent(sample);
}

暫無
暫無

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

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