java - 如何在 Java 中引用方法或属性?
问题描述
我对 Java 比较陌生。我想知道是否可以在 Java 中引用方法或属性。这不是Hibernate ORM特有的,只是为了给你一个想法,下面的例子写成Hibernate实体类。
@Entity(name = "Person")
public static class Person {
@Id
private Long id;
private String name;
@OneToMany(mappedBy = "author")
private List<Book> books = new ArrayList<>();
}
@Entity(name = "Book")
public static class Book {
@Id
private Long id;
private String title;
@NaturalId
private String isbn;
@ManyToOne
private Person author;
}
该Person::books
属性有一个设置为的OneToMany
注释,它最终在编译时引用该属性。我相信这要归功于 Java 强大的逆向工程功能,也就是. 这很棒,但是为了让事情变得更容易和可调试,我不想将String值作为值,而是使用对. 这将确保我们不会动态引用无效属性(IDE 友好)。如果我们错误地将字符串更改为,除非我们编译代码,否则我们不会知道它是无效的。mappedBy
"author"
Book::author
Reflection
mappedBy
Book::author
"authors"
因此注释的首选代码OneToOne
如下所示:
@OneToMany(mappedBy = Book::author)
private List<Book> books = new ArrayList<>();
我相信方法引用存在于Objective-C中。(和JavaScript也以一种 hacky 的方式)。
正如我所说,问题是 Java 是否具有方法/属性引用功能或任何黑客来做到这一点?它不是特定于 Hibernate ORM 的。我说的是一般的语言功能。
解决方案
这是不可能的,因为注解只允许某些类型,例如原语、枚举、类、其他注解等。它们不允许接口,更不用说函数/方法引用了。
推荐阅读
- regex - 使用 Python Re 从字符串中提取百分比
- javascript - 将活动类添加到基于 URL 的导航的最佳方法?
- kotlin - 为什么类的转换在 kotlin 中不起作用?
- xml - 将一个简单的字符串列表写入 XML 文件并再次加载,一个简单的数据库
- apache-kafka - 在不知道主题名称的情况下通用删除过时的 Kafka 消费者偏移量
- java - Android构建项目错误:任务执行失败
- r - 使用 ccwc() 函数进行风险集抽样,无需替换
- java - Quartz调度程序未在Mongodb的集群环境中获取锁定
- python - 如何在 PyQt5 中对 QLineEdit 进行子类化?
- excel - Excel公式为依赖于其他2列(名字和姓氏)的列分配唯一值?