Нет, это невозможно, потому что сама Java обновляет char
до int
, если может.
Вы можете сделать перегрузку вашей функции, которая принимает параметр char
вместо int
, что может вызвать исключение, но это не помешает никому преобразовать char
в int
и вызвать int
версия.
Нет абсолютно никакой разницы между символьной константой 'A'
, приведенной к целому числу и целому числу 65, поэтому было бы совершенно невозможно различить регистры.
Обновление от Pax:
Я бы сказал, что явное приведение НЕ передает char
, а вызывающий преобразовывает char
в int
, а затем передает int
. Это решение ловит случайное прохождение char
.
Извлечение чьего-либо кода из другого ответа:
public class Test {
private static void someMethod(char c) throws Exception {
throw new Exception("I don't think so, matey!");
}
private static void someMethod(int i) {
System.out.println(i);
}
public static void main(String[] args) throws Exception {
someMethod(100);
someMethod('d');
}
}
В результате:
100
Exception in thread "main" java.lang.Exception: I don't think so, matey!
at Test.someMethod(Test.java:4)
at Test.main(Test.java:13)