java - 调用方法的不同方式?

标签 java methods

我被告知这是调用方法的一种方式:

如果您只写方法或属性的名称,Java 将根据以下规则猜测您在名称之前要写的内容

  1. 如果方法不是静态的,它将尝试查找具有该名称的非静态方法/属性,然后查找静态方法/属性
  2. 如果方法是静态的,它将尝试仅查找静态方法/属性

谁能给我举个例子吗?我无法理解它的含义,因为在找到方法之前它如何知道该方法是否是静态的,但它是根据它是非静态还是静态来找到该方法的?或者他们指的是两种不同的方法或其他什么?

最佳答案

下面是一个示例,其中包含对方法 c、d 和 e 中会发生的情况的适当注释:

class A {
    // methods to be looked up
    // a static method
    static void a() {};
    // non-static method
    void b() {};


    static void c() {
         // valid reference to another static method
         a();        
    }

    static void d() {
         // This would fail to compile as d is a static method 
         // but b is a non-static
         b();        
    }

    // non-static method would compile fine
    void e() {
       a(); // non-static method can find a static method 
       b(); // non-static method can find another non-static method
    }

}

关于java - 调用方法的不同方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662887/

相关文章:

java - Netbeans javafx Hello World 示例

Java float 123.129456 到 123.12 没有四舍五入

javascript - 方法返回比属性更多的长度

java - 我部署的 servlet 在哪里? (点云,java)

java - 使用 Java API 的 ElasticSearch 完成建议器

java - hadoop 使用类名提交作业,为什么需要 job.setJarByClass()?

ruby - 哈希键作为类中的访问器

java - 有没有办法在 Scala 中的方法参数中声明一组指定的值?

java - 非常基本的 Java : For-Loop in Java method won't run

Swift UIGestureRecognizer 表示法