In Java, is it feasible to retrieve the values of annotations defined in one class within another?
For instance, consider the following annotation and its corresponding accessor methods:
<br>@Column(columnName="firstname")<br>private String firstName;</p> <p>@Column(columnName="lastname")<br>private String lastName;</p> <p>public String getFirstName() {<br> return firstName;<br>}</p> <p>public void setFirstName(String firstName) {<br> this.firstName = firstName;<br>}</p> <p>public String getLastName() {<br> return lastName;<br>}</p> <p>public void setLastName(String lastName) {<br> this.lastName = lastName;<br>}<br>
Is it possible to ascertain the "columnName" value of the @Column annotation from a separate class?
Yes, it is possible if the @Column annotation specifies runtime retention using @Retention(RetentionPolicy.RUNTIME). Here's how:
<code class="java">for (Field f: MyClass.class.getFields()) { Column column = f.getAnnotation(Column.class); if (column != null) System.out.println(column.columnName()); }</code>
Note that MyClass.class.getFields() retrieves only public fields. To access private fields, use MyClass.class.getDeclaredFields().
The above is the detailed content of Can You Access Annotation Values from a Different Class in Java?. For more information, please follow other related articles on the PHP Chinese website!