Ich habe mich viel umgesehen. Ich bin sehr neu in Java und versuche ein Double in einen Instant zu verwandeln. Der Anwendungsfall bezieht sich auf das Google Dataflow-Java-SDK. Das Double ist ein UNIX-Zeitstempel aus einer Datei, die ich mit TextIO gelesen habe. Wenn ich System.out.println(row.get("timestamp"))
bekomme ich tatsächlich UNIX-Zeitstempel. Wenn ich System.out.println(row.get("timestamp").getClass().getName())
mache, dann bekomme ich java.lang.double
. was ich habe, ist wie folgt:Konvertieren von java.lang.double zu org.joda.time.Instant
static class ExtractTimestamp extends DoFn<TableRow, TableRow> {
@Override
public void processElement(ProcessContext c) {
TableRow row = c.element();
Instant timestamp = (Instant) row.get("timestamp");
c.outputWithTimestamp(row, timestamp);
}
}
Der Fehler Ich erhalte ist:
java.lang.Double cannot be cast to org.joda.time.Instant
Das Problem ist, dass ich die UNIX-Zeitstempel werfen wollen, die Instants in Doppel sind so kann ich Übergeben Sie es an outputWithTimestamp
. Ich glaube, das sollte ein triviales Problem sein, aber ich konnte die Lösung noch nicht finden. Vielen Dank.
Im UNIX-Zeitstempel in Millisekunden, Sekunden, Tage? –
* "java.lang.Double kann nicht gecastet werden ..." * Bitte beachten Sie den "kleinen" Unterschied zwischen dem Objekttyp 'Double' und dem primitiven Typ' double'! –