我正在查看Android 4.2中引入的新API。在查看UserManager类时,我遇到了以下方法:
公共布尔值isUserAGoat()用于确定拨打此呼叫的用户是否需要进行远程传送。返回进行此调用的用户是否为山羊。
该如何使用以及何时使用?
我正在查看Android 4.2中引入的新API。在查看UserManager类时,我遇到了以下方法:
公共布尔值isUserAGoat()用于确定拨打此呼叫的用户是否需要进行远程传送。返回进行此调用的用户是否为山羊。
该如何使用以及何时使用?
当前回答
我不知道这是否是“官方”用例,但以下内容在Java中产生了一个警告(如果与返回语句混合,会进一步产生编译错误,导致无法访问代码):
while (1 == 2) { // Note that "if" is treated differently
System.out.println("Unreachable code");
}
但这是合法的:
while (isUserAGoat()) {
System.out.println("Unreachable but determined at runtime, not at compile time");
}
因此,我经常发现自己编写了一个愚蠢的实用程序方法,以最快的方式虚设一个代码块,然后在完成调试时找到对它的所有调用,因此只要实现不改变,就可以使用它。
JLS指出,如果(false)没有触发“不可访问的代码”,因为这会破坏对调试标志的支持,即基本上是这个用例(h/t@auselen)。(例如,静态最终布尔值DEBUG=false)。
我用if替换了while,产生了一个更模糊的用例。我相信你可以像Eclipse一样,用这种行为来破坏你的IDE,但这种编辑是在4年后的将来,我没有一个Eclipse环境可以玩。
其他回答
这似乎是谷歌内部的一个笑话。谷歌Chrome任务管理器中也有此功能。除了一些工程师觉得它很有趣之外,它没有任何用途。这本身就是一个目的,如果你愿意的话。
在Chrome中,用Shift+Esc键打开任务管理器。右键单击以添加Goats Teleported列。想知道
甚至有一个巨大的铬虫报告说,有太多的被传送的山羊。
以下Chromium源代码片段是从HN注释中窃取的。
int TaskManagerModel::GetGoatsTeleported(int index) const {
int seed = goat_salt_ * (index + 1);
return (seed >> 16) & 255;
}
有一个类似的调用isUserAMonkey(),如果正在使用MonkeyRunner工具,则返回true。SDK的解释和这个一样奇怪。
公共静态布尔值isUserAMonkey(){}如果用户界面当前被猴子搞乱,则返回true。
这是来源。
我预计,这是在一个名为something with a goat的新SDK工具的预期中添加的,它将实际用于测试该工具的存在。
另请参阅一个类似的问题,ActivityManager:isUserAMonkey中的奇怪函数。这意味着什么,它的用途是什么?。
在语音识别领域,用户分为山羊和绵羊。
例如,第89页:
绵羊是语音识别效果特别好的人,山羊是语音识别性能特别差的人。只有语音识别器知道它们之间的区别。人们无法预测谁的声音容易被识别,谁的声音不会被识别。最好的策略是设计界面,使其能够处理各种环境中的各种声音
也许,未来计划将Android用户标记为山羊,以便能够根据山羊的需要配置语音识别引擎
从可用性和可访问性的角度来看,了解您的用户是否是山羊很重要。
如果山羊想要真正受益于信息时代所提供的一切,那么它们的需求与软件的需求其实是截然不同的。
我觉得很好,一些好心的开发者关心我们所有的用户,而不仅仅是那些时尚的用户。
有趣的复活节彩蛋。在Ubuntu版本的Chrome中,在任务管理器(shift+esc)中,右键单击可以添加一个科幻专栏,在意大利语版本中为“Capre Teletransportate”(Teleported Goats)。
这里有一个有趣的理论。