如何解决如何将Java类名称作为参数传递并用作方法中的强制转换
我正在尝试实现一种通用对话框方法,每个活动都可以调用它。公共静态方法应为此类。但是我很难将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所述。这没有多大意义。如果可以将mContext
强制转换为activityClassName
,为什么不使用此类而不是Context
作为方法参数呢?
Context
可能实现某些interface
或扩展某些提供class
方法的getSupportFragmentManager
。因此完全不需要投射。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。