72 lines
1.3 KiB
Java
72 lines
1.3 KiB
Java
package org.eidecker.oca8lernen.general;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.file.AccessDeniedException;
|
|
import java.util.List;
|
|
import java.util.zip.DataFormatException;
|
|
|
|
/**
|
|
* @author seidecke.
|
|
*/
|
|
public class CastExceptions {
|
|
|
|
@Test
|
|
public void testCastExceptions() {
|
|
|
|
OberCast eigentlichUnter = new UnterCast();
|
|
OberCast wirklichOber = new OberCast();
|
|
UnterCast purUnter = new UnterCast();
|
|
|
|
Außerhalb außerhalb = new Außerhalb();
|
|
|
|
OberCast ober = purUnter;
|
|
|
|
UnterCast unter = (UnterCast) eigentlichUnter;
|
|
|
|
// Runtime-Exception, da innerhalb der Typenhierarchie
|
|
assertThrows(ClassCastException.class, () -> {
|
|
UnterCast unter3 = (UnterCast) wirklichOber;
|
|
});
|
|
|
|
// Compilefehler, da Versuch des Casts außerhalb der Typenhierarchie
|
|
// UnterCast unter2 = (UnterCast) außerhalb;
|
|
|
|
try {
|
|
UnterCast unterCast = new UnterCast();
|
|
unter.method();
|
|
} catch (RuntimeException e) {
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
class OberCast {
|
|
|
|
public void method() throws IOException{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class UnterCast extends OberCast {
|
|
|
|
@Override
|
|
public void method() {
|
|
System.out.println("method in Untercast");
|
|
}
|
|
}
|
|
|
|
class Außerhalb {
|
|
|
|
}
|
|
|
|
class MyCheckedException extends Exception {
|
|
|
|
}
|