java - ClassCastException 日期范围[]
问题描述
我试图将 DateRange [] 转换为带有流的数组,但它给了我一个 ClassCastException 错误
Array pgArray = rs.getArray("periodo_carica");
periodo_carica = (DateRange[]) pgArray.getArray();
List<DateRange> periodo_carica2 = new ArrayList<DateRange>();
periodo_carica2 =
Arrays.stream(periodo_carica)
.map(DateRange2::getRange)
.filter(d -> DateRange2.getRange(d) != null)
.collect(Collectors.toList());
输出:
Connected to PostgreSQL server successfully!
Exception in thread "main" java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to
class [Lorg.jfree.data.time.DateRange; ([Ljava.lang.Object; is in module java.base of loader
'bootstrap'; [Lorg.jfree.data.time.DateRange; is in module jfreechart@1.5.0 of loader 'app')
在我的 postgresql 数据库中,我有表,在 Eclipse 中的 java 中,我创建了相应的属性 DateRange[],您告诉我设置为对象 [] 但它是 DateRange[]
CREATE TABLE public.parlamentari
(
nome character varying(100) COLLATE pg_catalog."default" NOT NULL,
partito character varying(100) COLLATE pg_catalog."default" NOT NULL,
circoscrizione character varying(100) COLLATE pg_catalog."default" NOT NULL,
data_nascita date,
luogo character varying(100) COLLATE pg_catalog."default",
titolo_studi character varying(100) COLLATE pg_catalog."default",
mandati character varying(1000)[] COLLATE pg_catalog."default",
commissioni character varying(100)[] COLLATE pg_catalog."default",
periodo_carica daterange[],
CONSTRAINT parlamentari_pkey PRIMARY KEY (nome, partito, circoscrizione),
CONSTRAINT parlamentarinomekey UNIQUE (nome)
,
CONSTRAINT parlamentaripartitonomekey UNIQUE (partito, nome)
)
解决方案
更新
错误消息告诉我们getArray()
调用返回的值是 a Object[]
,而不是 a DateRange[]
。当然,数组中的所有对象都可能是DateRange
对象,但数组组件类型是Object
,而不是DateRange
,所以你必须转换两次。
Array pgArray = rs.getArray("periodo_carica");
Object[] periodo_carica = (Object[]) pgArray.getArray(); // cast to Object[]
List<DateRange> periodo_carica2 = new ArrayList<DateRange>();
periodo_carica2 =
Arrays.stream(periodo_carica)
.map(o -> (DateRange) o) // cast each element to DateRange
.map(DateRange2::getRange)
.filter(d -> DateRange2.getRange(d) != null)
.collect(Collectors.toList());
推荐阅读
- sql - Sqlite3:“删除......哪里不在......”的正确魔力是什么?
- google-apps-script - 将 .XLSX 转换为 Google Sheet 并移动转换后的文件的脚本
- sql - 从表 A 的列中提取文本并插入表 B
- c# - 未定义的预处理器变量“$(var.WixInstall.TargetPath)”。WixInstaller D:work\Extractor\WixInstaller\Product.wxs
- android - 我可以防止 onFling() 和 onDown() 都触发吗?
- time-series - 在 Tsay 的平均代码中将虚拟变量放在 GARCH 中的哪里并获得输出?
- ruby-on-rails - 出于测试目的,尝试从一个 actionmailer 方法返回所有已发送电子邮件的数组
- opencv - 如何获得干净的视差图和干净的深度图
- javascript - 如何使用 Vanilla JavaScript 或 JQuery 实现受控组件(在 ReactJS 中)
- file - 上传文件到 Telegram Server 的方法