Я думаю, что, возможно, это то, что вы после этого? Основной код проходит через все строки, а затем запускает каждую возможную «проверку» на этой Строке по очереди. Сам код «check» хранится в массиве, который содержит объекты с единственным методом проверки (String), который переопределяется в строке. Вы можете сделать метод check() делать все, что вам нужно, если оно работает от стандартной подписи, поэтому, если вам нужны проверки регулярного выражения или что-то более сложное, это также будет работать нормально.
public class TestTypes
{
public static void main(String[] args)
{
String[] strings = new String[] {"123", "9999999999999", "50.4", "not a number"};
for(String str : strings)
{
System.out.print("'" + str + "': ");
for(TypeChecker checker : typesToCheck)
{
if(checker.check(str))
{
System.out.print(checker.type.getSimpleName() + " ");
}
}
System.out.println();
}
}
static abstract class TypeChecker
{
public final Class type;
public abstract boolean check(String s);
TypeChecker(Class type)
{
this.type = type;
}
}
// A list of the code for all the checks
static TypeChecker[] typesToCheck =
{
new TypeChecker(Integer.TYPE) // is Integer
{
public boolean check(String s)
{
try{Integer.parseInt(s);}
catch(Exception e)
{return false;}
return true;
}
},
new TypeChecker(Long.TYPE) // is Long
{
public boolean check(String s)
{
try{Long.parseLong(s);}
catch(Exception e)
{return false;}
return true;
}
},
new TypeChecker(Double.TYPE) // is Double
{
public boolean check(String s)
{
try{Double.parseDouble(s);}
catch(Exception e)
{return false;}
return true;
}
},
};
}
Это производит вывод:
'123': int long double
'9999999999999': long double
'50.4': double
'not a number':
Это решение является много более многословным, и имеет уровень косвенности, который имеет потенциал, чтобы сделать его в заблуждение, так что если вы только получил небольшое количество возможных типов, я бы просто вложил в них массу и спас всех!
Такой подход является действительно хорошим подходом, если у вас есть сложные алгоритмы, которые необходимо запускать в тестах, или если вам нужно настроить, какие тесты выполняются динамически во время выполнения.
Whats Error ,,, ?? –
Что вы подразумеваете под «проверять каждый из них, если они соответствуют указанному типу»? –
Возможно, вы не должны использовать 'switch' так, как вы. – beerbajay