Как сравнить имя объекта со строкой в Java?Сравнение имени объекта (имя ссылки) со строкой
Например:
class_name obj = new class_name();
и я хочу, чтобы сравнить имя объекта obj
со строкой. Каков правильный способ сделать это?
Как сравнить имя объекта со строкой в Java?Сравнение имени объекта (имя ссылки) со строкой
Например:
class_name obj = new class_name();
и я хочу, чтобы сравнить имя объекта obj
со строкой. Каков правильный способ сделать это?
Это не может быть сделано непосредственно на Java. Переменные имена являются просто удобством для программиста и даже не отслеживаются после компиляции вашего кода. Вместо этого вы можете использовать Map
, который отображает строковые идентификаторы в соответствующие им объекты. Или же вы можете добавить name
поля в класс, который содержит строку ("obj"
в вашем примере):
ClassName obj = new ClassName("obj");
if (obj.getName().equals(...))
...
(Обратите внимание, что я предполагал более стандартное соглашение об именовании.)
==
сравнивают ссылки на объекты , Он выясняет, указывают ли два операнда на один и тот же объект.
Если вы хотите проверить, содержат ли две строки одинаковые символы, вам нужно сравнить строки, используя equals
.
Что касается конкретной проблемы, это невозможно.
Вы можете получить имя класса класса, вызвав obj.getClass()
. Вы не можете получить имя переменной объекта с помощью обычных средств.
Вы можете проверить тип объекта, используя ключевое слово instanceof
Посмотрите этот пример для более подробной информации
public void checkType(Object param) {
if(param instanceof String) {
System.out.println("param is a String");
}
else if(param instanceof Integer) {
System.out.println("param is an Integer");
}
}
Я считаю, что это правильный способ сделать это .. !!
Вы можете посмотреть here для получения более подробной информации
Если вы хотите получить доступ к локальным переменным и если исходный код скомпилирован с опцией javac -g
сохранить отладочную информацию, Bytecode Library like ASM может быть использован для получения этой детали. См 4.3. Debug
Классы скомпилированные с JAVAC -g содержат имя их исходного файла, отображение между номерами строки и инструкции байт-кода, а также отображение betwen имен локальных переменных в исходном коде и локальной переменной слоты в байтекоде. Эта дополнительная информация используется в отладчиков и трассировки стека исключений, когда он доступен
Если вы хотите получить имя переменных уровня/поля класса можно использовать java reflection API.
Это абсолютно невозможно. Какую проблему ты пытаешься решить? – SLaks
Пожалуйста, не используйте символы подчеркивания в именах классов. Конвенция о присвоении имен Java: «Имена классов должны быть существительными в смешанном случае с первой буквой каждого слова с заглавной буквы.'Придерживаясь этого, другие разработчики не видят при чтении вашего кода. – Kaadzia
@Ask_it вы проверили мой ответ .. ?? – Dileep