Integer.valueOf returns ASCII against a character
04:02 16 Dec 2019

Integer.valueOf takes in String and int as arguments but when I pass Character, it doesn't require casting and compiler doesn't enforce anything.

Character doesn't extend String class, it just implements Serializable and Comparable

Character charc = '1';
System.out.println(Integer.valueOf(charc));
System.out.println(Integer.valueOf(charc.toString()));

output:

49
1

Isn't it kind of design flaw or I am thinking in the wrong direction?

java integer character