【问题标题】:why no reference variable used to add method in awt为什么没有用于在 awt 中添加方法的参考变量
【发布时间】:2013-07-24 04:35:59
【问题描述】:

我第一次在 java 中使用 AWT,我发现了如何通过为按钮创建一个对象来在其中创建一个按钮 - 例如 b1 - 并使用 add 方法将此组件添加到容器中 [add (b1)] 。在这种情况下,我注意到,add() 是某个父类的方法,可能是已被继承的容器,并且按钮 b1 直接添加到其中,而没有调用方法 add() ( .add() ) 这对我来说有点令人困惑。不使用点运算符如何调用方法?

【问题讨论】:

  • 请给我们一个代码示例。如果没有至少一点代码,我们就无法知道您在说什么。
  • @Keppil 有你的答案(他的答案是 1+),但我还想建议你不要学习使用 AWT 编码,因为这已经很老了而且已经过时了。 Swing 更好,虽然它也有些过时了。
  • 为什么选择 AWT 而不是 Swing?请参阅Swing extras over AWT 上的此答案,因为有很多放弃使用 AWT 组件的充分理由。如果您需要支持较旧的基于 AWT 的 API,请参阅 Mixing Heavyweight and Lightweight Components

标签: java swing button awt


【解决方案1】:

如果该方法属于您当前所在的对象,无论是直接属于还是通过从父对象继承,您都不必为该方法添加任何前缀。你可以使用

add();

如果你想更加清楚,你可以使用this关键字来指定方法属于你所在的对象。这将和上面的完全一样:

this.add();

【讨论】:

  • 另外,如果您在匿名班级 - 您可以致电 MyClassName.this 以获取父级的参考。
【解决方案2】:
this.add()

add()

几乎总是相同的——它们编译成相同的字节码。不过,请参阅这个类似的问题:In Java, what is the difference between this.method() and method()? 了解更多详细信息,尤其是关于静态方法以及在内部类上/内部类中调用方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多