首页 > 解决方案 > 如何在 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::authorReflectionmappedByBook::author"authors"

因此注释的首选代码OneToOne如下所示:

@OneToMany(mappedBy = Book::author)
private List<Book> books = new ArrayList<>();

我相信方法引用存在于Objective-C中。(和JavaScript也以一种 hacky 的方式)。

正如我所说,问题是 Java 是否具有方法/属性引用功能或任何黑客来做到这一点?它不是特定于 Hibernate ORM 的。我说的是一般的语言功能。

标签: javahibernatepropertiesreference

解决方案


这是不可能的,因为注解只允许某些类型,例如原语、枚举、类、其他注解。它们不允许接口,更不用说函数/方法引用了。


推荐阅读