Code: Select all
public class ShadowingExample {
// This is a class field.
private String name = "Class Field";
public void example() {
String name = "Local Variable"; // The local variable 'name' shadows the field.
System.out.println("The class field is: " + this.name);
System.out.println("The local variable is: " + name);
}
public void anotherExample() {
System.out.println("Do something else first")
String name = "Local Variable"; // The local variable 'name' also shadows the field.
System.out.println("The class field is: " + this.name);
System.out.println("The local variable is: " + name);
}
}
Code: Select all
patterns:
- pattern: |
class $CLASS_NAME {
...
$FIELD_TYPE $SHADOW_NAME;
...
$RETURN_TYPE $METHOD_NAME(...) {
...
$VARL_TYPE $SHADOW_NAME =...;
...
}
}
Der zweite Ansatz, den ich verwendet habe
Code: Select all
patterns:
- pattern-inside: |
class $CLASS_NAME {
$FIELD_TYPE $SHADOW_NAME;
...
}
- pattern: |
$RET $M(...) {
...
$VAR_TYPE $SHADOW_NAME = ...;
...
}
- pattern: |
class $CLASS_NAME {
...
$FIELD_TYPE $FIELD_NAME = ... ;
...
}
- pattern: |
$RETURN_TYPE $METHOD_NAME(...) {
...
$VAR_TYPE $VAR_NAME = ...;
...
}
- metavariable-comparison:
comparison: $VAR_NAME == $FIELD_NAME
< /code>
Ich habe diesen Vergleich erwartet, um die Namen dieser beiden Metavariablen zu überprüfen. Zwei erste Muster erzeugen Übereinstimmungen, aber wenn es um den Vergleich geht, erzeugt es 0 Erkenntnisse