В настоящее время я пытаюсь использовать System.out.print для выдачи типа из целого числа x. Однако из того, что я нашел, единственными функциями, имитирующими typeOf, являются getClass, который не работает на int или instanceof, который, похоже, работает только с if. Есть ли какая-нибудь другая команда, которую я мог бы попробовать, или я застрял с System.out.print("Integer")
?
typeOf без использования getClass() или instanceof
ответ
Обратите внимание, что Java является статически типизированным языком. Нет необходимости проверять тип примитива переменной во время выполнения, потому что он известен во время компиляции и не может измениться. Например, если вы объявляете
int x = 5;
Тогда x
не может быть ничего другого, кроме int
, поэтому пытаются сделать что-то вроде typeof(x)
(как и в некоторых других языках) не имеет смысла.
Вы можете обобщать тип переменной присваиваем его Object
ссылочного типа:
int x = 5;
Object obj = x;
Но даже в этом случае obj
не будет int
. В этом случае Java-компилятор автоматически поместит ваш x
в Integer
, поэтому obj.getClass().getName()
вернет java.lang.Integer
и obj instanceof Integer
вернет true.
Как правило, нет разумных оснований для этого, если вы знаете тип, вам не нужна функция для его работы.
Единственный раз, когда это полезно, это когда вы не можете определить тип, например. потому что вы учитесь, и тип не очевиден. Вы можете реализовать это, используя перегруженную функцию, подобную этой.
public static void main(String[] args) {
byte b = 1;
byte a = 2;
System.out.println("The type of a+b is "+typeOf(a+b));
long l = 1;
float f = 2;
System.out.println("The type of l+f is "+typeOf(l+f));
}
public static String typeOf(byte b) {
return "byte";
}
public static String typeOf(char ch) {
return "char";
}
public static String typeOf(short s) {
return "short";
}
public static String typeOf(int i) {
return "int";
}
public static String typeOf(long i) {
return "long";
}
public static String typeOf(float i) {
return "float";
}
public static String typeOf(double i) {
return "double";
}
public static String typeOf(boolean b) {
return "boolean";
}
public static String typeOf(Object o) {
return o.getClass().getName();
}
печатает
The type of a+b is int
The type of l+f is float
- 1. Как узнать тип класса без использования instanceOf или getClass()?
- 2. Динамическая отправка без InstanceOf или GetClass() в Java
- 3. Как проверить тип объекта без использования экземпляра или getClass()
- 4. MooTools 1.5.2, изучающий typeOf и instanceOf
- 5. Javascript instanceof & typeof в GWT (JSNI)
- 6. Различия между typeof и instanceof в JavaScript
- 7. Тип подстановочного объекта без использования «instanceof»
- 8. Даунсайдинг и полиморфизм без использования instanceof? (Java)
- 9. Отражение: брось объект подкласса без использования InstanceOf
- 10. Это пример использования instanceof?
- 11. Избегайте использования InstanceOf Patterns
- 12. Java Type Check in equals(): instanceof vs getClass()
- 13. Избегайте использования 'instanceof'
- 14. Guice - Проверка правильности поведения инжектора - getClass() vs instanceof
- 15. ява InstanceOf и GetClass() не работает, как ожидалось
- 16. JavaScript isPrototypeOf против использования InstanceOf
- 17. Каков правильный способ использования «instanceof»?
- 18. Полезность использования class_implements VS InstanceOf
- 19. Несогласованность синтаксиса Javascript для пустых, instanceof и typeof?
- 20. ява андроид GetClass
- 21. decltype, result_of или typeof?
- 22. Netty.io messageReceived переопределить без instanceof
- 23. рассуждение позади typeof ('apple') vs typeof 'apple'
- 24. если (а = нуль && InstanceOf A!) ... или если (а InstanceOf A)
- 25. Что быстрее: instanceof или isInstance?
- 26. Нет ли точки для использования instanceof с массивом примитивных типов?
- 27. Избегайте использования InstanceOf в методе наблюдателя
- 28. Выполнение сравнения `typeof JSON`
- 29. Ожидаемое выражение перед «TYPEOF» ИЛИ ожидаемой первичной экспрессии до «TYPEOF»
- 30. Фабрика на основе Typeof или
Почему вы должны знать тип литерала? Сам литерал говорит вам о своем типе. Или это не то, что вы имеете в виду? –
Что вы пытаетесь сделать и почему вам нужно проверить, является ли элемент 'int'? Обратите внимание, что вы можете использовать 'int.class'. –
Мне не нужно его проверять, но выдавать какой элемент. Я пытаюсь найти способ сделать это без строки, так как я вкратце несколько раз изменил тип объекта при работе над ним. – byj