建议@EqualsAndHashCode添加 exclude 或 of 参数 排除循环引用对象
- 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
Assessment
This issue has not been assessed yet.