在 Java 中,private 属性不能直接访问,但可以通过间接方式获取,常见做法如下(按使用频率排序):
getter 方法(标准做法)这是最规范、最安全的方式。
public class User {
private String name;
public String getName() {
return name;
}
}
User user = new User();
String name = user.getName();
✅ 优点
适用于框架、工具、调试、特殊场景。
import java.lang.reflect.Field;
class User {
private String name = "Tom";
}
public class Test {
public static void main(String[] args) throws Exception {
User user = new User();
Field field = User.class.getDeclaredField("name");
field.setAccessible(true); // 关键:解除私有访问限制
String value = (String) field.get(user);
System.out.println(value); // Tom
}
}
⚠️ 注意
setAccessible(true) 会破坏封装class User {
private String name;
public User(String name) {
this.name = name;
}
public String info() {
return name;
}
}
User user = new User("Tom");
System.out.println(user.info());
@Getter
class User {
private String name;
}
user.getName();
User.name; // ❌ private 不能直接访问
| 方式 | 是否推荐 | 使用场景 |
|---|---|---|
| getter 方法 | ⭐⭐⭐⭐⭐ | 日常开发 |
| 反射 | ⭐⭐ | 框架 / 调试 |
| 构造方法 / 方法 | ⭐⭐⭐ | 间接访问 |
| Lombok | ⭐⭐⭐⭐ | 简化代码 |
如果你有具体场景(如:Spring、JSON 序列化、单元测试、Kotlin、Android),可以告诉我,我可以给你更精准的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。