If the final class implements interface I then compiler will be happy.
In my opinion. Compiler allows only objects and classes in the same hierarchy (if obvious to compiler)to be used with the instanceof operator. I said "obvious to compiler" because compiler allows this --
new ArrayList () instanceof I