c# で新しい演算子を作成することは可能ですか? に似ています。、Java 用の独自のオペレーターを作成することは可能ですか? オーバーロードできないため、最初はノーと言いますが、String は + と += をサポートします (実行時に StringBuilder を介して暗黙的になど)。
6 に答える
いいえ、Java はこのように拡張できません。演算子を追加することはできません。また、組み込み演算子をさらにオーバーロードすることもできません+
。BigInteger などの標準ライブラリ クラスでさえ、add()
などの演算子ではなくなどのメソッドを使用する必要があります+
。
Scala (別の静的 JVM 言語) は、組み込みの演算子ではなくメソッド呼び出しを使用し、メソッド名に任意の文字を許可することでこれを回避します。そのため、演算子のように見える新しいメソッドを定義できます。
a + 1
は、次のシンタックス シュガーです。
a.+(1)
Java はこれを許可しません。
ただし、この種の構文を実現しながら、JVM (および他の Java コード) でコードを実行できるようにしたい場合は、Groovy を調べることができます。カスタム演算子を使用するのと同様の効果を持つ構文)。
カスタム演算子 (オーバーロードだけでなく) を定義することは、どの言語でも大したことであることに注意してください。これは、レクサーと文法を何らかの方法で変更できる必要があるためです。
他のすべての人が言っているように、Java で新しい演算子を追加することは絶対にできません。ただし、Java に適した他の JVM 言語 (Groovy など) では、既存のオペレーター トークンから新しいオペレーターを定義できます。
いいえ、Java では演算子の特殊記号をオーバーロードできません。
いいえ。そうすべきではない理由については、この記事をお読みください: http://java.dzone.com/articles/why-java-doesnt-need-operator
Java プラットフォームでこれを実現するには、Scala などの別の言語を使用できます。- https://stackoverflow.com/a/1991348/1342121