Поиск квадратного корня из числа для эффективности. например. если я пытаюсь найти коэффициенты 36, то наибольшее число, которое может быть умножено на себя на форму 36, равно 6. 7 * 7 = 49.
, поэтому каждый коэффициент 36 приходится умножать на 6 или меньшее число.
Мне действительно не нравится то, что вы пытаетесь сделать, но вот моя модификация вашего кода, так что он компилируется и запускается:
Class [] domains = { Integer.class, Double.class, String.class };
String [] stringValues = { "12", "31.4", "dog" };
Comparable [] comparableObjects = { null, null, null };
for (int i = 0; i < domains.length; i++) {
Constructor con = domains[i].getConstructor(String.class);
comparableObjects[i] = (Comparable) con.newInstance(stringValues[i]);
System.out.println(comparableObjects[i]);
}
Печать:
12
31.4
dog
Хотя это может помочь если вы объясните словами, чего пытаетесь достичь, то, возможно, вы получите больше помощи, сделав это лучше.
Вам придется вызывать метод valueOf
каждого из этих классов. Так, возможно:
for (int i = 0; i < domains.length; i++) {
try {
comparableObjects[i] = (Comparable) domains[i]
.getMethod("valueOf", String.class).invoke(null, stringValues[i]);
} catch (NoSuchMethodException ex) {
comparableObjects[i] = stringValues[i];
}
}
Этот код берет метод valueOf
путем отражения. getMethod(...)
принимает имя метода и тип(ы) аргументов, а invoke(...)
принимает null
в качестве первого аргумента, поскольку метод статический.
Если есть другие классы, которые вы хотите преобразовать из String, вам придется использовать их методы конвертера.
Но я не знаю, нужно ли вам это на самом деле и зачем. Поскольку вы знаете все классы и аргументы.