- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一些 Java 代码,有一次我被一件事阻止了。
final String action = "action1";
final Button otherAction = (findById....);
otherAction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (action.equals("action1")) {
action = "action2";
} else if (action.equals("action2")) {
action = "action3";
} else if (action.equals("action3")) {
action = "action1";
}
}
});
显然这段代码不起作用,因为我不能为 action
分配一个新值,因为它是一个最终变量,因此只能初始化一次。
要从 onClickListener 范围内访问变量,您必须将其声明为 final。
所以我为解决这个问题所做的是:
final Button otherAction = (findById....);
otherAction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (t.action.equals("action1")) {
t.action = "action2";
} else if (t.action.equals("action2")) {
t.action = "action3";
} else if (t.action.equals("action3")) {
t.action = "action1";
}
}
});
Class t {
public static String action = "action1";
}
我的问题是:为什么这行得通?
最佳答案
字段不必是 final 就可以从匿名类访问,只需方法变量即可。
这是因为字段(其实体或类的)存在直到不再需要它(由 GC 确定),所以总有一个地方可以分配。
但是,如果您在某处传递匿名类实例,当包含方法退出时它可能仍然存在。想象一下在遥远的 future 某个时候调用此监听器的其他操作。但是没有地方可以再分配这个变量,因此它应该是最终的并在任何类实例化上复制。
关于java - 用 java final 关键字作弊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36764974/
背景 玩家在我的 Android 游戏中作弊已经有一段时间了。对于严格的单人游戏,这不是什么大问题,但由于我的游戏包含多人战斗和全局高分列表,这导致合法玩家因为作弊者而停止玩游戏。 他们是如何作弊的
这是怎么回事program访问其他进程内存?它如何写入另一个进程的地址空间?不应该是段错误还是什么? 最佳答案 具有系统特权级别的程序能够将物理地址映射到它自己的虚拟地址。 作弊 O'Matic(和
大家好 我想在我的电脑上赢得一场硬电子游戏。规则很简单:当屏幕变白时,我必须立即按下空格键。我必须做 200 次:/ 也许一个简单的 Java 应用程序可以帮助我 :P 像这样: new Thread
我正在使用预制模板组装一个管理界面。已经构建的导航系统使用 jQuery 将内容加载到基于 window.location.hash 的 AJAX 标记中。 如果我通过 AJAX 调用获取此片段,然后
我在网上搜索过,但我不知道从哪里开始。我们需要在学校用 PHP 做一个测验。如果您有正确答案并转到下一个答案,您会得到: session_start(); $_SESSION['score']++;
我需要使用 PHP 为某些页面制作一个虚假的引荐来源网址。 在我的http://www .a.com/header.php 页面我试了下面的代码 header("Referer: http://www
当使用如下所示的 using() {} (sic) block 时,并假设 cmd1 没有超出第一个 using 的范围() {} block ,为什么第二个 block 要抛出消息异常 The Sq
假设我想制作一个应用程序,根据用户访问的国家/地区数量(使用 GPS)为用户提供积分。 1) 是否有可能通过手机作弊? 2) 显然,您也可以让某人在他们的国家/地区使用他们的手机登录。手机可以绑定(b
对标题感到抱歉,真的想不出其他任何东西来描述这个问题:) 好的,事情是这样的:我正在尝试在 Linux 下使用专有的免费软件应用程序(因此出现了问题;如果我有源代码,我可以重建它)。此外,我试图在不受
我是一名优秀的程序员,十分优秀!