簡體   English   中英

如何將java類名作為參數傳遞並將其用作方法中的強制轉換

[英]How to pass a java class name as parameter and use it as casting in method

我正在嘗試實現每個活動都可以調用它的通用對話框方法。 公共靜態方法應該是這樣的。 但是我在將 mContent 轉換為其活動類名稱時遇到問題。

  public static void  openDialogEntry(Class activityClassName, Context mContext,  String title,  ... ) {
    Dialog_Entries   dialog = new Dialog_Entries(  title,   ...  );
    dialog.show( ((activityClassName) mContext).getSupportFragmentManager(), tag);
}

我想從任何活動的片段調用這個方法,例如從 SecondActivity.java 的片段(視圖)使用

 openDialogEntry(view.getContext().getClass, view.getContext(),  title,  ... ) ; 

我期望做的是在 openDialogEntry 方法中做類似下一行的事情

 dialog.show( ((SecondActivity) mContext).getSupportFragmentManager(), tag);

似乎((activityClassName) mContext)不起作用。 我也想從 MainActivity.java 和 ThirdActivity.java 調用公共靜態方法(以及它們需要轉換的片段)。

如何實現這個目標?

類有一個方法Class.cast(Object)你可以這樣做:

public static void openDialogEntry(Class<? extends Context> activityClassName, Context mContext, String title, ...) {
    Dialog_Entries dialog = new Dialog_Entries(title, ...);
    dialog.show(activityClassName.cast(mContext).getSupportFragmentManager(), tag);
}

請注意, cast僅在提供有關Class參數的通用信息時才有意義

但是正如@Zabuzard 已經提到的那樣。 這沒有多大意義。 如果您可以將mContextactivityClassName為什么不使用此類而不是Context作為方法參數?

Context可能實現一些interface或擴展一些class ,提供了getSupportFragmentManager方法。 所以根本不需要投射。

暫無
暫無

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

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