如何解决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[],您告诉我要设置为 OBJECT[] 但它是 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()
调用返回的值是 Object[]
,而不是 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());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。