package org.eidecker.oca8lernen.general; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import java.lang.reflect.Array; import org.junit.jupiter.api.Test; public class InstanceOfUndCast { @Test public void testInstanceof() { // Instanceof außerhalb Typhierarchie nicht möglich // boolean b = "Hallo" instanceof InstanceOfUndCast; assertEquals(false, null instanceof InstanceOfUndCast); String s; // Nicht möglich, da nicht initialisiert // s instanceof String; int[] array = {1, 3, 4}; assertEquals(true, array instanceof Object); // Nicht möglich, null kein Typ // "Hallo" instanceof null } @Test public void testPrimitiveCast() { byte a = 4; a = (byte) (a + 3); // Expliziter Cast erforderlich byte b = 2; b += 3; } @Test public void testCast() { OberCast echterOber = new OberCast(); OberCast oberAberUnter = new UnterCast(); UnterCast echterUnterCast = new UnterCast(); String s = (String) null; echterOber = (UnterCast) echterUnterCast; echterOber = oberAberUnter; echterUnterCast = (UnterCast) oberAberUnter; assertThrows(ClassCastException.class, () -> { UnterCast echterUnterCast2 = new UnterCast(); OberCast echterOber2 = new OberCast(); echterUnterCast2 = (UnterCast) echterOber2; }); {int i, j;} for (int i = 1; i< 3; i++) { } } class OberCast { } class UnterCast extends OberCast { void untercast() { System.out.printf("untercast"); } } class AußerhalbCast { } }