Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #30350 > unrolled thread
| Started by | Knute Johnson <eternal@knutejohnson.com> |
|---|---|
| First post | 2014-11-12 17:40 -0800 |
| Last post | 2014-11-13 10:01 -0800 |
| Articles | 3 — 2 participants |
Back to article view | Back to comp.lang.java.programmer
Accessing super method from inner class? Knute Johnson <eternal@knutejohnson.com> - 2014-11-12 17:40 -0800
Re: Accessing super method from inner class? Jeff Higgins <jeff@invalid.invalid> - 2014-11-12 21:54 -0500
Re: Accessing super method from inner class? Knute Johnson <eternal@knutejohnson.com> - 2014-11-13 10:01 -0800
| From | Knute Johnson <eternal@knutejohnson.com> |
|---|---|
| Date | 2014-11-12 17:40 -0800 |
| Subject | Accessing super method from inner class? |
| Message-ID | <m4126g$bkp$1@dont-email.me> |
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);
}
});
}
}
com\knutejohnson\cookbook\KTextArea.java:14: error: '(' expected
KTextArea.this.super.append(str);
^
1 error
but KTextArea.super.append(str); appears to work. Why doesn't it
require the 'this'?
--
Knute Johnson
[toc] | [next] | [standalone]
| From | Jeff Higgins <jeff@invalid.invalid> |
|---|---|
| Date | 2014-11-12 21:54 -0500 |
| Message-ID | <m416lq$c72$1@dont-email.me> |
| In reply to | #30350 |
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.
> }
> });
> }
> }
>
>
> com\knutejohnson\cookbook\KTextArea.java:14: error: '(' expected
> KTextArea.this.super.append(str);
> ^
> 1 error
>
> but KTextArea.super.append(str); appears to work. Why doesn't it
> require the 'this'?
>
[toc] | [prev] | [next] | [standalone]
| From | Knute Johnson <eternal@knutejohnson.com> |
|---|---|
| Date | 2014-11-13 10:01 -0800 |
| Message-ID | <m42rm0$tr0$1@dont-email.me> |
| In reply to | #30351 |
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
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.java.programmer
csiph-web