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

为什么要把一根绳子换成一根绳子?

鲁丰
2023-03-14

Oracle Java社区网站上的一篇文章给出了以下方法作为示例(对于JPA转换器,但我想这与此无关):

public Boolean convertToEntityAttribute(String y) {
    String val = (String) y;
    if(val.equals("Y")){
        return true;
    } else {
        return false;
    }
}

将字符串y转换为字符串val有什么用?这样做有正当理由吗?

原创文章:JPA中的新功能

共有3个答案

晁国发
2023-03-14

这种多余的铸造是无用的。

当前的代码可以简化为

public Boolean convertToEntityAttribute(String y) {
    return "Y".equals(y);
}
骆磊
2023-03-14

这样做有正当理由吗?

没有任何1

但另一方面,Java编译器知道类型转换是不必要的,并对其进行了优化。因此,唯一的“损害”是可读性。

例如。

[stephen@blackbox tmp]$ cat Test.java 
public class Test {
    public void test (String x) {
        String s = (String) x;
        System.out.println(s);
    }
}
[stephen@blackbox tmp]$ javac Test.java 
[stephen@blackbox tmp]$ javap -c Test
Compiled from "Test.java"
public class Test {
  public Test();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public void test(java.lang.String);
    Code:
       0: aload_1
       1: astore_2
       2: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       5: aload_2
       6: invokevirtual #3                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       9: return
}
[stephen@blackbox tmp]$ 

语句String s=(String)x 被编译成一个简单的加载和存储;无checkcast指令。

如果JIT编译器能够优化掉冗余的checkcast。。。如果它看到了。

1-。。。手写代码。在生成的源代码中,可以使用冗余类型转换,以便更容易地编写源代码生成器。毕竟,生成代码的可读性在很大程度上是无关紧要的

许沛
2023-03-14

这样的演员阵容完全没有必要我可以想象那是以前

public Boolean convertToEntityAttribute(Object y) {
    String val = (String) y;
    ...
}

但后来参数类型改为String,作者只是忘了删除强制转换。

 类似资料:
  • 我现在有点困惑。我试过: 得到: 然而,我想要: 我的代码怎么了?

  • 我正在为某些内容构建一个Javascript聊天机器人,我遇到了一个问题: 我使用来标记我的输入,如下所示: 现在我的问题是,我需要4个标记来生成命令,1个标记来包含消息。当我这样做时: 我之所以要这样做,是因为第一个令牌()是调用,第二个( )是命令,第三个( )是用户,第四个是密码(因为它是受密码保护的消息……只是为了好玩),第五个(

  • Leetcode 题目描述 把一根绳子剪成多段,并且使得每段的长度乘积最大。 // html n = 2 return 1 (2 = 1 + 1) n = 10 return 36 (10 = 3 + 3 + 4) 解题思路 贪心 尽可能多剪长度为 3 的绳子,并且不允许有长度为 1 的绳子出现。如果出现了,就从已经切好长度为 3 的绳子中拿出一段与长度为 1 的绳子重新组合,把它们切成两段长

  • 我有一个字符串: 它需要缩短,所以看起来像这样: 所以基本上,它需要使用所有重复的字符,并写下它们重复的次数,而不是打印它们。我设法做到了一半: 但这只适用于重复的字符,而不是模式。我可以通过在字符串中找到ab模式来做到这一点,但这需要对每一个可能的字符串都是可行的。有人遇到过类似的事情吗?

  • 我这里有一个JPanel,我想跟踪我给玩家的一些猜测。 每次调用PaintComponent时都会显示猜测。这是代码: 所发生的事情是,从先前调用repaint()来调用此方法的字符串不会消失。 这意味着“猜测剩余:”之后的数字在数字开始堆积之后变得不可读(从10开始,在调用方法之前下降一次)。 我看不出为什么这应该是一个问题。我遇到的一个类似问题是,当停止布尔值为真时,它应该退出该方法,而不是绘

  • 本文向大家介绍一根绳子,随机截成3段,可以组成一个三角形的概率有多大相关面试题,主要包含被问及一根绳子,随机截成3段,可以组成一个三角形的概率有多大时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 设绳子长为a,折成三段的长度为x,y,a-x-y从而得到,满足这三个约束条件在平面直角坐标系中的可行域为一个直角三角形,面积为。而构成三角形的条件,任意两边和大于第三边的条件x+y>a-x-y,a