如何解决Java注解创建构造函数
我正在为自动化框架使用PageFactory
页对象模型。现在,对于每个页面类,我都必须创建一个构造函数。例如:
public class StudentProfile {
public StudentProfile (WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver,this);
}
}
但是我想创建一个自定义注释。这样我就不必为每个Page Class重复一次
@InitElements(driver)
public class StudentProfile {
// to do
}
@InitElements(driver)
public class SchoolHomePage {
// to do
}
我经历了以下教程,但是不明白我将如何实现它?
解决方法
您基本上不能。注释API仅提供两个原语:
-
使注释在运行时可检查。如果您想编写一个工具,该工具接受某个类的实例,并使用在该类的字段上编写的注释作为将该实例序列化为XML或JSON blob的指导,那么这很好。在这个用例中,它绝对不起作用。您不能只在运行时将构造函数添加到事物中并使其有用(因此,构造函数在编译时就不存在,这显然是您想要的时候)。
-
将注释处理器插入编译过程中,它可以看到它们。但是,注释处理器可以立即使用API生成新文件。它不能修改现有的。因此,它也不能添加该构造函数。
还有第三个选项:Project Lombok,它使用注释并可以在现有文件中即时生成代码。但这是火箭科学-我们(我是核心贡献者之一)为各种编译器编写了自定义代码,并且几乎不做任何工作(以整理不支持的代码)以及大量维护工作,以确保一切正常。 / p>
对于我们定制的,仅针对您的项目且没有其他人的龙目岛扩音器来说,这听起来像是一项出色的任务,我们对此没有实际支持。当然,您可以从github上分叉lombok并添加它(如果需要),但是我们没有有关如何做到这一点的教程,我们也不建议这样做。
不幸的是,除了龙目岛(这很棘手)之外,这是直截了当的-不可能的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。