首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从外部类调用嵌套静态类中的方法,该方法使用一个特征

从外部类调用嵌套静态类中的方法,该方法使用一个特征
EN

Stack Overflow用户
提问于 2018-08-16 11:21:25
回答 2查看 93关注 0票数 1

我在两个不同的类A,B中有一个静态类,'Inner',和一个嵌套的静态类,'Deeper‘。‘'Inner’类实现了特性C,它有一个名为ping()的方法。我想从ping()方法中执行hello()方法(属于更深的方法),每次我都会根据调用该特征的类获得'Hello A‘或'Hello B’。这就是我所写的(我正在使用katalon-studio):

代码语言:javascript
复制
public class A
{
  static class Inner implements C{
     static class Deeper{ 
         static void hello(){ println 'Hello A'}
    }
  }
}
public class B
{
  static class Inner implements C{
     static class Deeper{ 
         static void hello(){ println 'Hello B'}
    }
  }
}
public static trait C {
     static void ping() {
          this.Deeper.hello()
     }
}

A.Inner.ping()
B.Inner.ping()

我得到了以下错误:

08-17-2018 04:46:57 PM -错误-测试用例/v2/通用/草稿失败,因为没有为测试用例定义变量“更深”。

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 12:04:34

请考虑以下代码:

代码语言:javascript
复制
class A implements C {}
class B implements C {}

trait C { 
    def whoAmI() {
        this.class.simpleName
    } 
}

// ---- main

assert "A" == new A().whoAmI() 
assert "B" == new B().whoAmI() 
票数 0
EN

Stack Overflow用户

发布于 2018-08-21 20:37:11

却找不到答案。但是,使用非静态类,可以按以下方式实现:

代码语言:javascript
复制
public class A{
   class Inner implements C{
      A.Inner.Deeper d = new A.Inner.Deeper()
      class Deeper { 
          void hello(){ 
             println 'Hello A'  
          }
      }
   }
}
public class B{
   class Inner implements C{
      B.Inner.Deeper d = new B.Inner.Deeper()
      class Deeper{ 
          void hello(){ 
             println 'Hello B' 
          }
      }
   }
}

public trait C{
      public void ping(){
         this.d.hello()
      }
}

new A.Inner().ping()
new B.Inner().ping()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51875837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档