65 lines
1.1 KiB
Plaintext
65 lines
1.1 KiB
Plaintext
include::../why.adoc[]
|
|
|
|
[source,java,diff-id=1,diff-type=noncompliant]
|
|
----
|
|
class Outer
|
|
{
|
|
public static int A;
|
|
|
|
public class Inner
|
|
{
|
|
public int A; // Noncompliant
|
|
public int MyProp
|
|
{
|
|
get { return A; } // Returns inner A. Was that intended?
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|
|
Here's an example of compliant code after renaming the inner class member, this way the property will return the `Outer` A:
|
|
|
|
[source,java,diff-id=1,diff-type=compliant]
|
|
----
|
|
class Outer
|
|
{
|
|
public static int A; // Compliant
|
|
|
|
public class Inner
|
|
{
|
|
public int B;
|
|
public int MyProp
|
|
{
|
|
get { return A; } // Returns inner A
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|
|
Or if you want to reference the `Inner` A field:
|
|
|
|
[source,java]
|
|
----
|
|
class Outer
|
|
{
|
|
public static int B;
|
|
|
|
public class Inner
|
|
{
|
|
public int A; // Compliant
|
|
public int MyProp
|
|
{
|
|
get { return A; } // Returns inner A
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|
|
== Resources
|
|
|
|
=== Documentation
|
|
|
|
* https://wiki.sei.cmu.edu/confluence/x/5DVGBQ[CERT, DCL51-J.] - Do not shadow or obscure identifiers in subscopes
|
|
* https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html[Nested and Inner classes]
|
|
|
|
include::../rspecator.adoc[] |