groovy调用静态java方法_如何在Groovy中的父静态方法中获取已定义类的名称

注意:我发现另一个答案表明Java会将静态方法调用重定向到它自己的类,即使它在子类上被调用,所以我想我需要找到一个Groovy解决方法,或者它不会是可行的 .

这是问题所在:我创建了一个带有“public static void main”的抽象通用“Launcher”类 . 这个想法是你扩展它,在你的子类中你注释这样的方法:

@Command("Show an explorere shell")

public dir() {

"explorer".execute()

}

此类的父级有一个main,它反映了@Command注释,如果方法名称与您的参数匹配,则执行它 .

问题是我无法弄清楚如何判断实际的实例化类在父的静态main方法中是什么 .

我很确定在某个地方有一个技巧 - “这个”在静态中不起作用,堆栈跟踪不包含实际类,只包含父类,我在类中找不到任何元信息或帮助的MetaClass对象 .

目前我已经通过将子类的名称硬编码到父类的主体中来实现它,如下所示:

public class QuickCli {

public static void main(String[] args} {

(new HardCodedChildClassName())."${args[0]}"()

}

}

我从中减少了很多,但这是一般的想法 . 我想替换

"new HardCodedChildClassName()"

有一些东西适用于任何扩展此类的类 .

鉴于上面的两个代码片段,命令将从命令行执行,如下所示:

groovy HardCodedChildClassName dir

虽然我不想让所有的@Command方法保持静态但我必须这样做,但是目前我甚至不相信我可以做到这一点 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值