当前位置: 首页 > 知识库问答 >
问题:

如何在Java强制铸造?[关闭]

皇甫树
2023-03-14

我想用Java强制转换一个值。例如,将布尔值转换为泛型。我之前检查过类型,所以我知道我在做什么。但是编译器不想让我把它转换成。我怎样才能强制施法?

public <T> T read(PersistenceKey key, T defaultValue) {
    if (defaultValue instanceof Boolean) {
        return (T) this.sharedPreferences.getBoolean(key.toString(), (Boolean) defaultValue);
    }
}

共有1个答案

白子默
2023-03-14

我认为原因是如果有一段代码T不是布尔值,这将破坏代码。这就是编译器抱怨的原因。您是否测试defaultValue并不重要,因为这一切都是在运行时出现的,而泛型是编译时

public <T> T read(PersistenceKey key, T defaultValue) {
    if (defaultValue instanceof Boolean) {
        return (T) this.sharedPreferences.getBoolean(key.toString(), (Boolean) defaultValue);
    }
}
 类似资料:
  • 我目前在辅导一个高中生AP Java,她问了我一个关于“双选”的问题。我以前从未听说过这个术语,但显然她的老师希望她在即将到来的期末考试中知道这个术语。 她的老师提供的例子是,如果你想将一个整数转换成一个字符串,你必须执行以下操作才能避免编译器错误: 问题是:你想在现实生活中什么时候这样做? 老师只提供了导致运行时错误的示例。此外,我从来不知道有一个术语,但这样做似乎是个坏主意,因为只有当两种类型

  • 上面是一段代码,它以某种形式出现在我即将进行的一次考试的过去试卷中。这个问题的想法是衡量你是否完全理解多态性,动态和静态铸造。面向对象的基本思想。 我想把我认为正确的东西拿出来,如果人们能纠正我或补充一点,我将不胜感激。 我看不出任何与上面代码相关的其他观点。

  • 我对Java中的原语类型有一个问题。我使用的是JDK1.6。 如果我有以下信息: 编译器不想编译——它说它“无法从int转换为short”,并建议我转换为,因此: 真的管用。但我的问题是,我为什么要投?a和b的值在-短值范围为{-32768,32767}的范围内。当我想执行操作时,我还需要强制转换-,*,/(我还没有检查其他操作)。 如果我对基元类型执行相同的操作,我不需要将aa bb强制转换为。

  • 在我的Swift项目中,我试图用Xcode使用Google Cast 3.2.0(通过cocoapods),但在模拟器中运行时出现了一个错误。

  • 与这两个问题相关的是: null Java Buildpack自动为和设置sane值。通过调优参数和配置预期线程的(最大)数量,我非常确定Java进程消耗的内存应该小于我分配给云铸造应用程序的上限。 但是,我仍然会遇到Cloud Foundry“内存不足”错误(不是Java OOM错误!): 我尝试了设置。将该值设置为1或2会导致启动缓慢。在的情况下,我仍然看到了上面描述的错误,所以这不是我的问题

  • 我有一个PWS帐户,在安装云铸造命令行界面(CLI)后,我尝试从windows命令提示符、CYGWIN终端和Gitbash登录。在上述所有情况下,我都不能通过登录 但是如果我发出命令:就可以登录,但是这个命令的问题是我在命令行上公开了我的密码。 我在windows命令提示符中尝试了同样的命令,它起作用了,我可以登录了。