Java 中的静态泛型字段

2023-12-01

我将通过传递通用字段(演示者)来实现片段的初始化,然后将此演示者连接到创建的视图。

public class BaseViewFragment <P extends BasePresenter> extends Fragment implements BaseView {

static private P presenter; //the problme is here, I do not allowed this
static private BaseViewFragment baseViewFragment;
.
.
.

public static <P extends BasePresenter> BaseViewFragment initialize(P presenter) {

    if (baseViewFragment != null) {
        presenter.setView(baseViewFragment);
    } else {

        baseViewFragment = new BaseViewFragment();
        presenter.setView(baseViewFragment);
    }

    BaseViewFragment.presenter= presenter;
    return baseViewFragment;
}

但似乎通用静态字段是不允许的。我该如何处理这个问题?


来自Java doc:

无法声明类型为类型参数的静态字段

类的静态字段是所有类共享的类级变量 类的非静态对象。因此,类型的静态字段 不允许使用参数。

这是不可能的,因为静态字段由类的所有实例共享BaseViewFragment,如果允许的话,对于每个新的BaseViewFragment实例你可以指定一个新的Generic Type parameter。所以这是不允许的。

你可以做的是:使用 Presenter 实例传递给 FragmentsetPresenter方法并初始化。

例如,

    P presenter; // no need for static

    public BaseViewFragment() {

    }

    public void setPresenter(P presenter) {
       this.presenter = presenter;
    }

设置演示者:

baseViewFragment  = new BaseViewFragment(); 
baseViewFragment.setPresenter(presenter);

顺便说一句,有一个Fragment在静态变量中可能会导致内存(Activity)泄漏。当Fragment破坏?如果没有,你就会泄露你的Fragment和界限Activity和所有的Views in it.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的静态泛型字段 的相关文章

随机推荐

  • 在单独的 .kv (Kivy) 文件中定义的屏幕之间切换

    我曾经通过在单个 kv 文件中定义所有内容 包括屏幕 来设法使多屏幕程序运行 通过使用root current 在 kv 文件中 或self root current 在 Python 文件中 我能够在屏幕之间切换 然而 一旦存在多个包含许
  • 在用户交互之前,dgrid 0.4.0 树看起来很平坦

    尝试使用 dgrid 0 4 0 显示树结构 没有使用过以前版本 0 3 x 的经验 我用两个文件夹构建了这个示例 alice 和 bob 每个都会有一些文件 叶子 商店 astore js define dojo base declare
  • 如何在 bazel 中为 Python 和 pip 选择运行时?

    我正在尝试在 Ubuntu 20 04 上构建一个应用程序 其中 python3 指向 Python3 8 并且我正在构建 aganist Python3 6 我在 WORKSPACE 的同一目录中有以下运行时 cat BUILD baze
  • 连接/聚合字符串的最佳方法

    我正在寻找一种将不同行的字符串聚合到一行中的方法 我希望在许多不同的地方做到这一点 所以有一个函数来促进这一点会很好 我尝试过使用解决方案COALESCE and FOR XML 但他们就是不适合我 字符串聚合会做这样的事情 id Name
  • 如何从通过 XMLHttpRequest 接收的 html 页面创建 DOM 对象?

    我正在开发一个 chromium 扩展 因此我对我请求权限的域具有 XMLHttpRequests 的跨主机权限 我使用了 XMLHttpRequest 并获得了一个 HTML 网页 txt html 我想使用 XPath document
  • Angular UI-Router 模式删除父状态

    我正在开发一个具有 ui router 模块的角度应用程序 当进入路由器的某种状态时 我会显示一个模式对话框 然后它会替换我的父视图 我想保留父视图并将模式显示为叠加 有没有办法用 ui router 做到这一点 举个例子 statePro
  • iOS (FMX) 上的“保存到文件”

    我想将电子邮件附件保存到我的应用程序的文档文件夹 适用于 iOS 和 Android 的 C FMX 应用程序 如何将我的应用程序注册为目标 下面的屏幕截图显示我手机上名为 Termius 的应用程序是保存文件的目标 我希望我的应用程序成为
  • 有没有办法在chrome自定义选项卡中加载html内容

    是否可以使用 android 中的 chrome 自定义选项卡加载本地 html 内容 网上查了没找到解决办法 谁能帮忙啊 无法使用 Chrome 自定义选项卡直接加载 HTML 内容 但您可以尝试将内容保存到本地文件并提供 file UR
  • 无法在 Mac OS X 上安装 MySQL

    我遇到了这个问题中描述的确切问题 MYSQL安装问题 不幸的是 没有一个答案对我有帮助 并且它已关闭 我尝试学习 Ruby on Rails 但没有让 MySQL 工作 所以它与编程相关 我输入 rake db create并得到 The
  • 如何在android中方向改变时继续视频播放

    我使用 videoview 在 android 默认播放器中播放视频 当我改变它的方向时 它从头开始播放 我怎样才能让它从方向改变的那一点继续下去 Add
  • 代码隐藏检查以查看控件是否已设置为显示:无?

    我目前有一个隐藏在我的服务器端的控件dropdown hide hide 是我创建的用于隐藏我的方法的服务器端方法 例如 control Style display none 在服务器端如何判断我的控件是否隐藏 我猜你的意思不仅仅是做 if
  • 无法使用preparedStatement创建表

    我无法使用以下命令在数据库 mySQL 中创建表preparedStatement并尝试输入未来表的名称preparedStatement setInteger static String queryCreateTable CREATE T
  • 在 ReportNG 中未获取 TestNG 的报告

    我正在 eclipse 中执行 testng 我想在 reportNG 中生成报告 为此 我已经包含了 guice 3 0 reportng 1 1 3 velocity dep 1 4 jar 文件 并在 xml 文件中添加了侦听器 此外
  • jQuery 通过按钮 onclick 跳转或滚动到页面上的特定位置、div 或目标 [重复]

    这个问题在这里已经有答案了 当我单击按钮时 我希望能够向下跳转或滚动到页面上的特定 div 或目标 clickMe click function jump to certain position or div or target on th
  • 如何定义实例?

    我在面试中被问到一个问题 但我无法回答 这是问题 您将如何定义实例 c 我的回答是它是另一个名字object 这个问题的正确答案是什么 实例之于类 就像蛋糕之于菜谱一样 每当您使用构造函数创建对象时 您都在创建一个实例
  • 用于 WSDL 和 BasicHttpBinding 的 F# 类型提供程序

    当我在 C 中使用 WSDL 服务时 我可以将两个参数传递给构造函数 BasicHttpBinding 和 EndpointAddress BasicHttpBinding basicHttpBinding new BasicHttpBin
  • PHP Artisan Tinker 无法与 Laravel 5.5.16 一起使用

    我运行 php artisantinker 但它不起作用它只显示这样的消息 c xampp htdocs app tpa gt php artisan tinker 错误异常 rmdir C Users KIMUNG 1 AppData L
  • 如何使用 JavaScript Regex 提取字符串?

    我正在尝试使用 JavaScript 正则表达式从文件中提取子字符串 这是文件中的一个片段 DATE 20091201T220000 SUMMARY Dad s birthday 我要提取的字段是 摘要 方法如下 extractSummar
  • Mac Lion 10.8 的 XAMPP 上的 Php-intl 安装

    大家好 我正在尝试在 Mac 版 xampp 上安装 intl 库 我已经安装了 php 5 3 所以我只是将 intl so 文件从 php 5 3 位置复制到 Xampp bin 文件夹 之后我取消注释 extension intl s
  • Java 中的静态泛型字段

    我将通过传递通用字段 演示者 来实现片段的初始化 然后将此演示者连接到创建的视图 public class BaseViewFragment p extends Fragment implements BaseView static pri