From fa55f989d68e9f38fc0e19ccd9061c9ddf5d3122 Mon Sep 17 00:00:00 2001 From: anmoldeep0123 Date: Tue, 25 May 2021 00:27:21 +0530 Subject: [PATCH] BAEL-4220 | A Guide to IllegalAccessError and when it happens (#10798) * BAEL-4220 | A Guide to IllegalAccessError and when it happens * BAEL-4220 | A Guide to IllegalAccessError and when it happens | fix tests * BAEL-4220 | A Guide to IllegalAccessError and when it happens | fix tests * BAEL-4220 | A Guide to IllegalAccessError and when it happens | BDD test names --- .../exceptions/illegalaccesserror/Class1.java | 8 +++++++ .../exceptions/illegalaccesserror/Class2.java | 10 +++++++++ .../IllegalAccessErrorExample.java | 20 ++++++++++++++++++ .../IllegalAccessErrorSolved.java | 20 ++++++++++++++++++ .../IllegalAccessErrorExampleUnitTest.java | 21 +++++++++++++++++++ .../IllegalAccessErrorSolvedUnitTest.java | 14 +++++++++++++ 6 files changed, 93 insertions(+) create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class1.java create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class2.java create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExample.java create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolved.java create mode 100644 core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExampleUnitTest.java create mode 100644 core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolvedUnitTest.java diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class1.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class1.java new file mode 100644 index 0000000000..d50d2bc5f5 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class1.java @@ -0,0 +1,8 @@ +package com.baeldung.exceptions.illegalaccesserror; + +public class Class1 { + + public void bar() { + System.out.println("SUCCESS"); + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class2.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class2.java new file mode 100644 index 0000000000..766ceccb6b --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/Class2.java @@ -0,0 +1,10 @@ +package com.baeldung.exceptions.illegalaccesserror; + +public class Class2 { + + public void foo() { + Class1 c1 = new Class1(); + c1.bar(); + } +} + \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExample.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExample.java new file mode 100644 index 0000000000..2cc1abbb1d --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExample.java @@ -0,0 +1,20 @@ +package com.baeldung.exceptions.illegalaccesserror; + +public class IllegalAccessErrorExample { + + interface Baeldung { + public default void foobar() { + System.out.println("This is a default method."); + } + } + + class Super { + private void foobar() { + System.out.println("SuperClass method foobar"); + } + } + + class MySubClass extends Super implements Baeldung { + + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolved.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolved.java new file mode 100644 index 0000000000..8f6a4c14a4 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolved.java @@ -0,0 +1,20 @@ +package com.baeldung.exceptions.illegalaccesserror; + +public class IllegalAccessErrorSolved { + + interface BaeldungSolved { + public default void foobar() { + System.out.println("This is a default method."); + } + } + + class SuperSolved { + public void foobar() { + System.out.println("SuperClass method foobar"); + } + } + + class MySubClassSolved extends SuperSolved implements BaeldungSolved { + + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExampleUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExampleUnitTest.java new file mode 100644 index 0000000000..201e782229 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorExampleUnitTest.java @@ -0,0 +1,21 @@ +package com.baeldung.exceptions.illegalaccesserror; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class IllegalAccessErrorExampleUnitTest { + + @Test() + public void givenInterfaceDefaultMethOverriddenPrivateAccess_whenInvoked_thenIllegalAccessError() { + Assertions.assertThrows(IllegalAccessError.class, () -> { + new IllegalAccessErrorExample().new MySubClass().foobar(); + }); + } + + @Test() + public void givenClass1Class2_whenSameClassDefintion_thenNoIllegalAccessError() { + Assertions.assertDoesNotThrow(() -> { + new Class2().foo(); + }); + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolvedUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolvedUnitTest.java new file mode 100644 index 0000000000..ad150334d4 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/illegalaccesserror/IllegalAccessErrorSolvedUnitTest.java @@ -0,0 +1,14 @@ +package com.baeldung.exceptions.illegalaccesserror; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class IllegalAccessErrorSolvedUnitTest { + + @Test() + public void givenInterfaceDefaultMethOverriddenNonPrivateAccess_whenInvoked_thenNoIllegalAccessError() { + Assertions.assertDoesNotThrow(() -> { + new IllegalAccessErrorSolved().new MySubClassSolved().foobar(); + }); + } +}