Generics being reified are a CLR feature available to any .NET language (which Java in the form of J# could take advantage of [0]), don't have anything to do with C# OOP model per se, and were an impediment to properly implement Scala.NET.
This will be fixed on Java side, with value specializations as per Valhala roadmap.
Extension methods are also a way to create lots of spaghetti code, trying to track down where the method is actually implemented.
Swift and Kotlin codebases are good examples on how one can go a bit too far with extension methods.
Java's solution is to offer default interface methods as an approach to traits, which was copied by C# 8.
Regarding interfaces, if you mean explicit interface implementations, besides forcing casts everywhere I don't see what is so well thought out about them.
[0] - https://docs.microsoft.com/en-us/archive/blogs/gauravseth/cu...