小编Dmi*_*ach的帖子

用于Scala的IntelliJIDEA中的Java字节码反编译器

我正在使用IntellijIDEA Ultimate Edition.浏览.classjava源代码编译的文件很简单:我只需双击.class文件即可,IDEA会对其进行反编译.

但是,对于.classscala源代码编译的文件,它不起作用.似乎IDEA只是引用了scala源文件.

我注意到IDEA的行为只有scala plugin安装后才有.没有它,它工作正常.有没有办法在不关闭的情况下使用IDEA进行反编译scala plugin

java scala intellij-idea jvm-bytecode

10
推荐指数
1
解决办法
2359
查看次数

Mapstruct:仅对集合映射忽略特定字段

我使用以下映射器来映射实体:

public interface AssigmentFileMapper {

AssigmentFileDTO assigmentFileToAssigmentFileDTO(AssigmentFile assigmentFile);

AssigmentFile assigmentFileDTOToAssigmentFile(AssigmentFileDTO assigmentFileDTO);

@Mapping(target = "data", ignore = true)
List<AssigmentFileDTO> assigmentFilesToAssigmentFileDTOs(List<AssigmentFile> assigmentFiles);

List<AssigmentFile> assigmentFileDTOsToAssigmentFiles(List<AssigmentFileDTO> assigmentFileDTOs);
}
Run Code Online (Sandbox Code Playgroud)

我只需要忽略映射为集合的实体的"数据"字段.但它看起来@Mapping只适用于单个实体.另外我注意到生成的方法assigmentFilesToAssigmentFileDTOs只是用于assigmentFileToAssigmentFileDTOfor循环.那有什么解决方案吗?

java mapping mapstruct

8
推荐指数
1
解决办法
2万
查看次数

从java.lang.Long创建Scala选项时出现意外行为

给出以下代码:

val javaLong: java.lang.Long = null
val opt: Option[Long] = Option(javaLong)
Run Code Online (Sandbox Code Playgroud)

我期望选择,None但出于某种原因,它是Some(0).我也发现了这个bug,看来隐式转换发生在option的apply方法之前.我认为这仍然是一个错误,因为人们不会期望这种行为,我想知道是否有任何解决方法或一些更好的方法来包装空值.

更新:上面的代码只是一个简化的部分.真实的例子是这样的:

Person(Option(doc.getLong()))
Run Code Online (Sandbox Code Playgroud)

人是:

 case class Person(id: Option[Long])
Run Code Online (Sandbox Code Playgroud)

和方法doc.getLong()是返回java.lang.Long的java方法

null scala implicit

6
推荐指数
1
解决办法
167
查看次数

如何使用 sqlbuilder 构建 SELECT 查询?

我正在使用来自http://openhms.sourceforge.net/sqlbuilder/ 的Java 和 SQLBuilder, 并尝试动态构建 SQL SELECT 查询:

SelectQuery sql = new SelectQuery();
sql.addAllColumns().addCustomFromTable("table1");
sql.addCondition(BinaryCondition.like("column1", "A"));
Run Code Online (Sandbox Code Playgroud)

但是,它会创建这样的字符串:

SELECT * FROM table1 WHERE ('column1' LIKE 'A')
Run Code Online (Sandbox Code Playgroud)

由于错误的引号 ( 'column1') 无法正常工作。我想它在.like()方法中需要一些 Column 对象。有没有办法用正确的引号创建查询?

java sql sqlbuilder

5
推荐指数
1
解决办法
4014
查看次数

杰克逊连载。强制将每个字段包装为对象

我知道已经有人问过类似的问题。但那个解决方案不适合我。

我有两个具有很多字段的 POJO:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Profile {

    @JsonProperty("userAttrs")
    private List<UserAttr> userAttrs;

}
Run Code Online (Sandbox Code Playgroud)

@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserAttr {

  @JsonProperty("ordercode")
  private String ordercode;

  @JsonProperty("transactionid")
  private String transactionid;

  @JsonProperty("receiptno")
  private String receiptno;

  // A lot more fields
Run Code Online (Sandbox Code Playgroud)

Jackson 按预期生成 JSON:

"profile" : {
  "userAttrs" : [ {
    "ordercode" : 123,
    "transactionid" : 12345,
    "reference" : 123456789,
    "orderpaymenttypecode" : 1231341,
    ... more properties ...
  } ]
}
Run Code Online (Sandbox Code Playgroud)

但是我需要将每个属性包装为 JSON 对象。像这样的东西:

"profile" : {
  "userAttrs" : [ 
    {"ordercode" : 123},
    {"transactionid" …
Run Code Online (Sandbox Code Playgroud)

java json jackson

5
推荐指数
1
解决办法
826
查看次数

从 Linux 上的图标启动 Intellij IDEA:未找到 JDK

我正在使用 Linux Mint 并尝试从开始菜单上的图标运行 Intellij IDEA。通过终端启动 Intellij./idea.sh工作正常。但是从图标(指向同一个./idea.sh)启动最终会出现以下错误:

No JDK found. Please validate either IDEA_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation.

运行echo $JAVA_HOMEjava -version正常工作并显示已安装的 JDK。如何解决此问题以及为什么从图标开始与从终端开始不同?

java linux ubuntu intellij-idea

5
推荐指数
1
解决办法
3427
查看次数

返回数字时应该显式指定返回类型吗?

考虑一些方法返回double.在某些情况下,我需要返回默认的零值.我可以明确地将其指定为return 0d,但java允许我们将其指定为return 0自动转换.

这种类型的转换是在编译时还是在运行时发生的?不指定类型(例如性能)是否会产生任何潜在的负面影响?

java performance

1
推荐指数
1
解决办法
142
查看次数