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.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a21ce1f77cb01dfc

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
	}
}