Re: Accessing super method from inner class?
On 11/12/2014 18:54, Jeff Higgins wrote:
On 11/12/2014 08:40 PM, Knute Johnson wrote:
I've got some code where I am wrapping all the calls to
JTextArea.append() in EventQueue.invokeLater(). So I thought I would
just extend JTextArea but what I thought was obvious isn't.
import java.awt.*;
import javax.swing.*;
public class KTextArea extends JTextArea {
public KTextArea(String text) {
super(text);
}
public void append(final String str) {
EventQueue.invokeLater(new Runnable() {
public void run() {
KTextArea.this.super.append(str);
In this context, this means your new Runnable, super means Object,
and KTextArea.super means JTextArea, and KTextArea.this is undefined.
I think.
I think I've answered my own question, from the JLS;
"15.12
Method Invocation Expressions
EXPRESSIONS
500
Suppose that a field access expression T.super.f appears within class C,
and the immediate superclass of the class denoted by T is a class whose
fully qualified name is S. If f in S is accessible from C , then
T.super.f is treated as if it had been the expression this.f in the body
of class S. Otherwise, a compile-time error occurs."
I'm not sure if that is what you are saying but I think so. I thought
that the 'this' was needed to reach the instance but it appears as
though Class.super.field implies SuperClass.this.field. I'm curious how
this is going to work with static fields :-).
Thanks for taking the time to answer.
--
Knute Johnson