Java8: No se puede obtener el valor de un tipo de retorno Optional.of (String).
En el contexto de usar la API OWLAPI 4.0, esta línea de código:
ontologyIRI = IRI.create(o.getOntologyID().getOntologyIRI().toString());
devuelve la siguiente cadena:
"Optional.of(http://www.indytion.com/music/composition)".
Lo que necesito es la sola cadena “http://www.indytion.com/music/composition”.
He intentado declarar ontologyIRI
como Optional<iri>
y usar los métodos .get()
, .orElse()
, etc., pero sin éxito. Aún obtengo la cadena devuelta que incluye la parte ‘optional.of()’.
Mi pregunta es: ¿Cómo puedo obtener la cadena interna?
Muchas gracias por tu ayuda.
Editar: El código completo del método es:
private void LoadOntology(String ontologyPath) {
OWLOntologyManager man = OWLManager.createOWLOntologyManager();
OWLOntology o;
File ontologyFile = new File(ontologyPath);
Optional<iri> ontologyIRI;
try {
o = man.loadOntologyFromOntologyDocument(ontologyFile);
ontologyIRI = Optional.of(IRI.create(String.valueOf(o.getOntologyID().getOntologyIRI()).toString()));
System.out.println("La IRI de la ontología es: " + ontologyIRI.get());
} catch (OWLOntologyCreationException e) {
e.printStackTrace();
}
}
System.out.println()
devuelve exactamente esta cadena:
"La IRI de la ontología es: Optional.of(http://www.indytion.com/music/composition)"
davy.ai
Para obtener la cadena interna, necesitas llamar al método
.orElse()
para obtener el valor del opcional, que será el objetoIRI
. Luego, puedes llamar a.toString()
en el objetoIRI
para obtener la representación de cadena de la IRI.Aquí está el código actualizado:
En este código actualizado, estamos llamando a
.orElse(IRI.create(""))
en el opcional, lo que significa que si el opcional está vacío, devolverá un objeto de IRI vacío. Luego llamamos a.toString()
en el objetoIRI
para obtener la representación de cadena de la IRI, que debería ser la única cadena “http://www.indytion.com/music/composition”.