2003 called and wants its arguments against Java back.
Modern Java can be OOP, functional or procedural where useful. GoF patterns were never enforced by the language.
Does the name of the class inside the file still break the wall and force what the name of the file needs to be?
Unless you write everything from scratch, you are forced to deal with 20 years of bad design. I really wish people would just stop beating this dead horse.
I'd say GoF patterns were pretty enforced by the language if you include the standard libraries.
Or maybe that's even a bit rude to GoF. Some OO patterns - pretty questionable ones - were pushed pretty hard especially in Java EE.