Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Equivalent of internal in java

What is equivalent of internal access modifier available in C# for method in Java?

(I know default i.e. methods, variables without any scope are having package access but I am looking for keyword equivalent)

How can we achieve methods with protected internal scope in Java?

like image 548
dbw Avatar asked Jan 04 '14 13:01

dbw


People also ask

What is internal in Java?

In Java, just like methods, variables of a class too can have another class as its member. Writing a class within another is allowed in Java. The class written within is called the nested class, and the class that holds the inner class is called the outer class.

What is internal modifier in Java?

Packages are equivalent to namespaces. But Assemblies can be compared to JAR files in Java. The internal modifier makes a class only accessible within an assembly.

Does Java have an internal access modifier?

There's no equivalent of an assembly in Java, so there can't be an equivalent of an access modifier which makes a member available within an assembly. The closest you can get to internal is the default accessibility which is similar but based on package.

What is access control in Java?

In Java, access control tells the program how much access a variable, class or method is given. Access control is important because it affects visibility based on different access control types.


1 Answers

There's no equivalent of an assembly in Java, so there can't be an equivalent of an access modifier which makes a member available within an assembly.

The closest you can get to internal is the default accessibility which is similar but based on package.

The closest you can get to protected internal is protected (but again based on package). Note that protected in Java also gives access to the package automatically - there's nothing in Java which is as restrictive as C#'s protected (in terms of only being available within subclasses).

From JLS 6.6.2 (emphasis mine):

A protected member or constructor of an object may be accessed from outside the package in which it is declared only by code that is responsible for the implementation of that object.

In other words, within the package in which it is declared, it's accessible to all code.

like image 115
Jon Skeet Avatar answered Oct 05 '22 10:10

Jon Skeet