Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Talk:Variable shadowing

Page contents not supported in other languages.
Add topic
From Wikipedia, the free encyclopedia

Local variable shadowing vs. member variable shadowing

[edit]

All examples show cases of variable shadowing except that of Java in my opinion.

In the example with Java, it's just a class field shadowed by a local variable.

It's my opinion because I can't find a precise definition of "variable shadowing": Is it just "any redefined variable name will take precedence" (and may lead to confusion) or "any redefined variable name will make the shadowed variable hidden/unreachable" (which is more confusing)?

In my opinion, the current Java example is not a case of "variable shadowing" since the shadowed field is still accessible (with the syntax this.myIntVar), while in all the other examples the shadowed variables are not accessible anymore/at all.


I don't know if my definition hardens the real one (which I can't find). I think the example in Java should be modified, for an example (of "real" variable shadowing IMO) like:

public class Shadow {

	public static void main(final String[] args) {
		final int myIntVar = 1;
		final int anotherName = 2;
		new Runnable() {
			
			@Override
			public void run() {
				System.out.println(myIntVar); // prints 1
				final int myIntVar = 5;
				System.out.println(anotherName); // prints 2
				System.out.println(myIntVar); // prints 5, we can't see anymore the outer variable myIntVar
			}
		}.run();
		System.out.println(myIntVar); // prints 1
	}
}