User's Manual
Chapter 2 Using the Signature Test Tool 13
■ When there are two different access modifiers select the more visible one.
For example, if A is a public int foo, and B is protected int foo, then the
merge into C results into public int foo.
■ If the elements differ in the final modifier, do not include it If a class is final,
then all of its methods are implicitly final according to Section 8.4.3.3 of The Java
Language Specification, 2nd Editon.
■ If corresponding elements differ in the static modifier, then declare a conflict.
Element-specific rules are as follows:
■ If corresponding classes differ in the abstract modifier, then declare a conflict.
■ Apply the following rules for classes or interfaces and nested classes or interfaces,
where for the purpose of this description, c1 and c2 are corresponding classes
from the input APIs:
If a superclass of c1 is a subclass of a superclass of c2, use the superclass of c1 as
the superclass for the new element. Otherwise, if a superclass of c2 is a subclass of
a superclass of c1, use the superclass of c2 as the superclass for the new element.
If neither of the previous two conditions are possible, then declare a conflict.
■ For classes or interfaces and nested classes or interfaces, create a combined set of
superinterfaces of the corresponding classes and dismiss duplicates. Use the
combined set for the new element.
■ For methods and constructors, construct a throws list as follows:
■ In binary compatibility mode, an empty throws list results independently of
the source lists.
■ In source compatibility mode, both throws lists are normalized as described in
TABLE 2-3 before they are compared. If the normalized lists are equal, one is
used as the result, otherwise, a conflict is declared.
■ Methods that differ in the abstract modifier are not included.
■ If a method result type is not identical a conflict is declared.
■ If a field value type is not identical a conflict is declared.
■ If a field element differs in the volatile modifier, it is included.
■ Process constant field values as follows:
■ If one of the fields has a constant value and other does not, include the
constant value in the result field.
■ If both fields have a constant value then declare a conflict if the values are
different, otherwise include the value in the result field.