如何从 Java 中的对象中提取日期
How to extract dates from an Object in Java
我应该从对象中提取日期,但编译器正确地告诉我 getDate() 没有在对象上定义。我该如何定义它?如果我不能定义它,我做错了什么?我应该使用 Hibernate 库还是流?谢谢你。
要将 Object 转换为 DateRange [] 我做了两个步骤:从 Object -> MyObject
然后从
MyObject-> DateRange []
class MyObject extends Object {
Date Lower_Date;
Date Upper_Date;
private MyObject(Date Lower_Date, Date Upper_Date) {
this.Lower_Date = Lower_Date;
this.Upper_Date = Upper_Date;
}
public Date getLowerDate() {
return this.Lower_Date;
}
public Date getUpperDate() {
return this.Upper_Date;
}
}
...
public class Tabella_Parlamentari {
public static DateRange getDateRange(Date a, Date b) {
return new DateRange(a,b);
}
...
try {
if(periodo_carica == null)
periodo_carica = null;
else {
Array pgArray = rs.getArray("periodo_carica");
Object obj = pgArray.getArray();
List<Object> objlist = new ArrayList<Object>();
objlist.add(obj);
List<MyObject> myobjlist = new ArrayList<MyObject>();
myobjlist = objlist.stream()
.filter(e -> e != null)
.map(o -> (MyObject) obj.getDate()) //prima estrai tutte le date
.collect(Collectors.toList());
List<DateRange> periodo_carica2 = new ArrayList<DateRange>();
periodo_carica2 =
myobjlist.stream()
.filter(e -> e != null)
.map(o -> getDateRange(o.getLowerDate(),o.getUpperDate()))
.collect(Collectors.toList());
periodo_carica = periodo_carica2.toArray(DateRange[]::new);
}
/* Stream.Builder<DateRange> dateStreamBuilder = Stream.builder();
Date[] date_intervallo = periodo_carica2.stream().toArray(Date[]::new);
for(int i=0; i< periodo_carica2.size(); i++) {
periodo_carica2.stream().forEach(d -> DateRange(d.getLowerDate(),
d.getUpperDate()));
dateStreamBuilder.accept((DateRange)periodo_carica[i]);
*/
// Stream<DateRange> dateStream = dateStreamBuilder.build();
}
catch(NullPointerException obj) {
periodo_carica = null;
}
我不知道你的DateRange
class,但我觉得你可以这样写你的方法。
public DateRange getDate() {
return new DateRange(Lower_Date, Upper_Date);
}
如果在 MyObject
和 DateRange
中都使用 java.time 中的 LocalDate
,现代 Java 日期和时间 API,而不是老式的 java.util.Date
.
我应该从对象中提取日期,但编译器正确地告诉我 getDate() 没有在对象上定义。我该如何定义它?如果我不能定义它,我做错了什么?我应该使用 Hibernate 库还是流?谢谢你。 要将 Object 转换为 DateRange [] 我做了两个步骤:从 Object -> MyObject 然后从 MyObject-> DateRange []
class MyObject extends Object {
Date Lower_Date;
Date Upper_Date;
private MyObject(Date Lower_Date, Date Upper_Date) {
this.Lower_Date = Lower_Date;
this.Upper_Date = Upper_Date;
}
public Date getLowerDate() {
return this.Lower_Date;
}
public Date getUpperDate() {
return this.Upper_Date;
}
}
...
public class Tabella_Parlamentari {
public static DateRange getDateRange(Date a, Date b) {
return new DateRange(a,b);
}
...
try {
if(periodo_carica == null)
periodo_carica = null;
else {
Array pgArray = rs.getArray("periodo_carica");
Object obj = pgArray.getArray();
List<Object> objlist = new ArrayList<Object>();
objlist.add(obj);
List<MyObject> myobjlist = new ArrayList<MyObject>();
myobjlist = objlist.stream()
.filter(e -> e != null)
.map(o -> (MyObject) obj.getDate()) //prima estrai tutte le date
.collect(Collectors.toList());
List<DateRange> periodo_carica2 = new ArrayList<DateRange>();
periodo_carica2 =
myobjlist.stream()
.filter(e -> e != null)
.map(o -> getDateRange(o.getLowerDate(),o.getUpperDate()))
.collect(Collectors.toList());
periodo_carica = periodo_carica2.toArray(DateRange[]::new);
}
/* Stream.Builder<DateRange> dateStreamBuilder = Stream.builder();
Date[] date_intervallo = periodo_carica2.stream().toArray(Date[]::new);
for(int i=0; i< periodo_carica2.size(); i++) {
periodo_carica2.stream().forEach(d -> DateRange(d.getLowerDate(),
d.getUpperDate()));
dateStreamBuilder.accept((DateRange)periodo_carica[i]);
*/
// Stream<DateRange> dateStream = dateStreamBuilder.build();
}
catch(NullPointerException obj) {
periodo_carica = null;
}
我不知道你的DateRange
class,但我觉得你可以这样写你的方法。
public DateRange getDate() {
return new DateRange(Lower_Date, Upper_Date);
}
如果在 MyObject
和 DateRange
中都使用 java.time 中的 LocalDate
,现代 Java 日期和时间 API,而不是老式的 java.util.Date
.