在我的一个Java项目中,由于Java处理(而非)原语的方式,我受到代码重复的困扰。不必后手动复制到四个不同的位置相同的变化(int
,long
,float
,double
)
再次 ,对于 第三次 的时候, 再 和 再次 我来到非常接近(?)来抢购。
共识似乎收敛到两个可能的选择:
嗯,第二种 解决方案
是我现在正在做的事情,并且它对我的理智逐渐变得危险,就像众所周知的酷刑技术一样。
自问这些问题和Java 7诞生以来已经过去了两年。因此,我希望有一个更简单和/或更标准的解决方案。
Java 7是否有任何更改可以缓解这种情况下的 压力 ?我在简明的变更摘要中找不到任何内容,但也许某个地方有一些晦涩的新功能?
尽管可以选择源代码生成,但我更喜欢使用标准JDK功能集支持的解决方案。当然,可以使用cpp
或其他代码生成器来工作,但会添加更多依赖项,并且需要更改构建系统。
似乎由JDK支持的唯一种类的代码生成系统是通过注释机制。我设想了一个处理器,它将像这样扩展源代码:
@Primitives({ "int", "long", "float", "double" })
@PrimitiveVariable
int max(@PrimitiveVariable int a, @PrimitiveVariable int b) {
return (a > b)?a:b;
}
理想的输出文件将包含此方法的四个请求的变体,最好包含相关的Javadoc注释等。是否存在注释处理器来处理这种情况?如果没有,建造一个将需要什么?
编辑:
重要说明:除非有理由,否则我不会使用原始类型。即使在现在,在某些应用程序中使用盒装类型也会对性能和内存产生非常实际的影响。
编辑2:
使用max()
作为一个例子允许使用的compareTo()
是在所有的数字boxed类型可用的方法。这有点棘手:
int sum(int a, int b) {
return a + b;
}
在不实际编写六到七次的情况下,如何能支持所有数字盒装类型的此方法?
我倾向于使用“超级类型”,例如,long
或者double
仍然需要原始类型。性能通常非常接近,并且避免了产生很多变化。顺便说一句:64位JVM中的寄存器无论如何都将是64位的。
在上面,我有类似的10个if条件,如何避免上面的重复代码?我需要使用任何Java8个函数类作为参数来避免重复代码(或者)必须使用任何额外的泛型代码吗?
我正在开发一个旧的Struts应用程序,它有一个抽象操作,通过填充Excel模板文件来创建Excel导出。 每个Excel导出操作都扩展此父类,并添加自己的实现来填充Excel模板,并定义自己的模板和输出文件名。 实现是这样的,这就是SonarQube“警告”代码重复的地方: 有没有办法避免重复?
我使用for循环将学生详细信息添加到ArrayList。当我给第二个学生提供详细信息时,它会覆盖第一个数据。螺柱类 将数据添加到ArrayList的主类。 输出:第二个数据[2,2]后的实际输出辊数[1]。预期输出应为卷号: A1姓名: F1 L1性别:男性年龄: 11体育赛事:标枪 报名号:A2姓名:F2 L2性别:女年龄:14体育项目:100米跑 报名号:A3姓名:F3 L3性别:男性年龄:1
我有下一个示例代码: 你可以看到id是JSON格式中的一个重复字段,我知道PostgreSQL有一些功能可以避免这个问题,但我找不到。
问题内容: 我需要将一个以’\ n’分隔的文本字段(描述)解析为三个单独的字段。我通过利用和来执行此操作,但是它导致难以阅读和重复的sql。有没有一种方法可以创建和使用变量或表达式来保存instring函数返回的“位置”值,因此我可以将该变量传递给它?我在下面发布的代码可以正常工作并返回正确的结果,但是感觉不正确。有很多重复。 相关原始数据: 所需结果: 当前代码: 问题答案: 我建议使用哪一个功
我有一个简单的项目,该项目将个人信息提供给数据库(sqlite),现在我想避免插入重复值(按名称),我不能做什么?谢谢你们