Java ClassCastException日期范围[]
我试图将DateRange[]转换为带有流的数组,但它给了我一个ClassCastException错误Java ClassCastException日期范围[],java,stream,resultset,classcastexception,date-range,Java,Stream,Resultset,Classcastexception,Date Range,我试图将DateRange[]转换为带有流的数组,但它给了我一个ClassCastException错误 Array pgArray = rs.getArray("periodo_carica"); periodo_carica = (DateRange[]) pgArray.getArray(); List<DateRange> periodo_carica2 = new ArrayList<DateRange>(); periodo_cari
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());
在我的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()
调用返回的值是对象[]
,而不是日期范围[]
。当然,数组中的所有对象可能都是DateRange
对象,但数组组件类型是Object
,而不是DateRange
,因此您必须强制转换两次
Array pgArray=rs.getArray(“periodo_carica”);
Object[]periodo_carica=(Object[])pgArray.getArray();//强制转换到对象[]
List periodo_carica2=新数组列表();
周期=
Arrays.stream(periodo_carica)
.map(o->(DateRange)o)//将每个元素强制转换为DateRange
.map(DateRange2::getRange)
.filter(d->DateRange2.getRange(d)!=null)
.collect(Collectors.toList());
我尝试了你说的速率,但它告诉我:periodo_carica=pgArray.getArray()//类型不匹配:无法从对象转换到对象[]…。如果我声明:Object periodo_carica//我得到另一个错误:类型数组中的方法流(T[])不适用于参数(Object)…到行:Arrays.stream(periodo_carica.map(o->(DateRange)o)//线程“main”java.lang.ClassCastException中的异常:class org.postgresql.util.PGobject不能转换为class org.jfree.data.time.DateRange(org.postgresql.util.PGobject位于模块org.postgresql中。jdbc@42.2.18加载程序“app”的名称;org.jfree.data.time.DateRange位于模块中jfreechart@1.5.0位于Servlet_Parlamento.Parlamentari.Tabella_Parlamentari.lambda$0(Tabella_Parlamentari.java:106)的加载程序“app”)的@因此数组包含PGobject
对象,而不是DateRange
对象。因为我们不知道您的数据模型,所以我们无法帮助解决这个问题。在postgresql中的数据库中,我有一个表,在Eclipse中的java中,我创建了相应的属性DateRange[],您告诉我将其设置为OBJECT[],但它是DateRange[]@Marina在错误消息中说“Object[]
不能强制转换为DateRange[]
”,因此显然是调用getArray()
时从数据库获得的Object[]
。
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)
)