Java >> Java tutorial >  >> Java

Java:videregivelse af et argument med en anden type til en funktion

Se JLS - Afsnit # 5.3 for detaljer om Method Invocation Conversion .

Metodeopkaldskontekster tillader brugen af ​​en af ​​følgende:

- an identity conversion (§5.1.1)
- a widening primitive conversion (§5.1.2)
- a widening reference conversion (§5.1.5)
- a boxing conversion (§5.1.7) optionally followed by widening reference conversion
- an unboxing conversion (§5.1.8) optionally followed by a widening primitive conversion.

Så din første påkaldelse(int til double ) fungerer fint i henhold til regel # 2 .

Men den anden påkaldelse(double til int ) vil give Compiler Error , ifølge udtalelsen, der er citeret yderligere i samme afsnit:-

Hvis typen af ​​udtrykket ikke kan konverteres til parameterens type ved hjælp af en konvertering tilladt i en metodeankaldelseskontekst, opstår der en kompileringsfejl.


Fordi du kan sætte en double til et heltal, så er heltal som argument ok at fungere med double som parameter. Omvendt mislykkes. I så fald skal du kaste dobbelten til en int. Det samme gælder for normale opgaver f.eks...

  int i = 6;
  double d = 0;
  d = i;  /* ok
  i = d ; /* not ok

Java tag