JWhiz
JWhiz

Reputation: 681

How to prevent an interface from getting extended

In Java, Is there a way to prevent extending an interface.

Since final cannot be added to an interface , i was curious to know whether there was a way if any, to prevent extending an Interface.

Upvotes: 7

Views: 1150

Answers (3)

emory
emory

Reputation: 10891

This is very similar to a previously asked question -- final interface in java.

I gave two answers.

  1. Yes, through byte code engineering. The resulting interface can not be extended but has no practical value
  2. Yes, annotations are interfaces that cannot be extended by other interfaces.

In addition, you can put the interface inside a class, give it the private access modifier, and make sure no interface in that class file extends it.

Upvotes: 0

Johannes Wachter
Johannes Wachter

Reputation: 2735

The problem here is a conceptual one. Interfaces are meant to be extended because they can't be used as-is.

What you could do is put the interface inside a package and give it default visibility. With that only classes inside that package can implement that interface.

But with that solution you also lose the possibility to use the interface outside that package, so it is no real solution.

Upvotes: 3

Mark Byers
Mark Byers

Reputation: 838146

There is no way to prevent extending an interface.

You could detect if someone has extended your interface at runtime using reflection.

Upvotes: 2

Related Questions