C# 6.0 giới thiệu toán tử nameof()
, trả về một chuỗi biểu thị tên của bất kỳ lớp/hàm/phương thức/biến địa phương/thuộc tính nào được đặt bên trong nó.nameof tương đương trong Java
Nếu tôi có một lớp học như thế này:
class MyClass
{
public SomeOtherClass MyProperty { get; set; }
public void MyMethod()
{
var aLocalVariable = 12;
}
}
tôi có thể sử dụng toán tử như thế này:
//with class name:
var s = nameof(MyClass); // s == "MyClass"
//with properties:
var s = nameof(MyClass.OneProperty); // s == "OneProperty"
//with methods:
var s = nameof(MyClass.MyMethod); // s == "MyMethod"
//with local variables:
var s = nameof(aLocalVariable); // s == "aLocalVariable".
này rất hữu ích từ chuỗi chính xác được kiểm tra tại thời gian biên dịch. Nếu tôi sai chính tả tên của một số thuộc tính/phương thức/biến thì trình biên dịch trả về lỗi. Ngoài ra, nếu tôi refactor, tất cả các chuỗi được tự động cập nhật. Xem ví dụ this documentation cho các trường hợp sử dụng thực tế.
Có tương đương với toán tử đó trong Java không? Nếu không, làm thế nào tôi có thể đạt được kết quả tương tự (hoặc tương tự)?
Đẹp, chắc chắn Java không có bất cứ điều gì chính xác tương đương. Vì vậy, như trước C# 6 bạn có thể sẽ chỉ phải sử dụng chuỗi ký tự thay thế. – juharr
'nameof' là cú pháp được thêm vào trong phiên bản mới nhất của C# (6).Tôi khá chắc chắn rằng Java (hoặc các ngôn ngữ phổ biến nhất nói chung) sẽ không có một tương đương. – Abion47
Bạn đang cố gắng giải quyết vấn đề gì với khả năng này? – OldProgrammer