apache / apache/fesod

建议@EqualsAndHashCode添加 exclude 或 of 参数 排除循环引用对象

Open
#97 1 comment 0 reactions 1 assignee Claimed by @fkong-bgl View on GitHub
bug
Dominant language
Java
Stars
6.2k
Forks
532
Avg merge
1d 3h
Merged PRs (30d)
42

Description

在scala3中 会出现hashCode死循环
Scala2 升级scale3后出现 hashCoded导致的StackOverflowError

触发Bug的代码
class ExportData(
field1: String,
field2: String,
description: Option[String] // 使用Option 导致hashCode死循环
) {
def getField1() = field1

def getField2() = field2

def getDescription(): Option[String] = description
}

class SimpleTest {

val exportData = List(
new ExportData("data1", "data2", Some("abc")),

)

@Test
def test(): Unit = {
EasyExcelFactory.write("out2.csv", classOf[ExportData])
.excelType(ExcelTypeEnum.CSV)
.sheet("Sheet1")
.doWrite(exportData.asJava)
}
}

提示的异常或者没有达到的效果
java.lang.StackOverflowError
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.excel.metadata.csv.CsvWorkbook.hashCode(CsvWorkbook.java:36)
at com.alibaba.excel.metadata.csv.CsvSheet.hashCode(CsvSheet.java:60)
at com.alibaba.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.