Anstatt einer impliziten Konvertierung kann der Java-Compiler einen Fehler erzwingen, wenn die Variablentypen nicht übereinstimmen. Zum Beispiel:Wie wird der Java-Compiler dazu gebracht, eine explizite Typkonvertierung zu erzwingen?
int intValue=3;
double dblValue = 2.2;
double result;
result = 1/intValue*(intValue-dblValue);
In dem obigen Beispiel Java implizit konvertieren (1/intValue) auf eine ganze Zahl mit dem Wert 0
Was will ich für den Compiler ist ein Fehler, wenn Variablentypen don ausstellen nicht übereinstimmen, sondern implizit konvertieren.
Vielen Dank im Voraus
Edit1: Die obige Gleichung ist nur ein Beispiel. Ich weiß, wie dieses Problem zu beheben, indem Sie eine der folgenden Lösungen:
result = 1.0/intValue*(intValue-dblValue);
oder
result = 1/(double)intValue*((double)intValue-dblValue);
, aber das ist nicht das, was ich bin nach. Danke
Edit2: Ich bezog sich auf Typkonvertierung nicht Typ Casting. Ich suche nach dem Compiler, um explizite Typkonvertierungen zu erzwingen.
Ich bin auf der Suche nach so etwas wie folgt aus: https://support.microsoft.com/en-us/help/311329/option-explicit-and-option-strict-in-visual-basic-.net-and-in-visual-basic
Nun, das ist absolut legaler Java-Code, also gibt es keinen Grund, dass es in diesem Fall einen Fehler erzeugt. –
"implizit Cast (1/intValue) zu einer Ganzzahl mit dem Wert 0" - was? Dort ist kein Casting involviert. Es erzeugt kein Double und wirft es dann auf int oder ähnliches. Der Divisionsoperator erzeugt direkt einen Int. – user2357112
Nein. Die Regeln von Java sind bereits definiert, und das von Ihnen erwähnte Konstrukt ist kein Fehler. Es ist nicht einmal eine Typumsetzung. Es ist eine implizite Umwandlung in den Fällen, in denen Ints und Doubles enthalten sind, und nichts in dem Fall, bei dem nur Ints beteiligt sind. Unklar, was du verlangst. – EJP