10

c# で新しい演算子を作成することは可能ですか? に似ています。、Java 用の独自のオペレーターを作成することは可能ですか? オーバーロードできないため、最初はノーと言いますが、String は + と += をサポートします (実行時に StringBuilder を介して暗黙的になど)。

4

6 に答える 6

15

いいえ、Java はこのように拡張できません。演算子を追加することはできません。また、組み込み演算子をさらにオーバーロードすることもできません+。BigInteger などの標準ライブラリ クラスでさえ、add()などの演算子ではなくなどのメソッドを使用する必要があります+

Scala (別の静的 JVM 言語) は、組み込みの演算子ではなくメソッド呼び出しを使用し、メソッド名に任意の文字を許可することでこれを回避します。そのため、演算子のように見える新しいメソッドを定義できます。

a + 1

は、次のシンタックス シュガーです。

a.+(1)
于 2012-04-23T20:42:29.443 に答える
10

Java はこれを許可しません。

ただし、この種の構文を実現しながら、JVM (および他の Java コード) でコードを実行できるようにしたい場合は、Groovy を調べることができますカスタム演算子を使用するのと同様の効果を持つ構文)。

カスタム演算子 (オーバーロードだけでなく) を定義することは、どの言語でも大したことであることに注意してください。これは、レクサーと文法を何らかの方法で変更できる必要があるためです。

于 2012-04-23T20:48:13.443 に答える
0

他のすべての人が言っているように、Java で新しい演算子を追加することは絶対にできません。ただし、Java に適した他の JVM 言語 (Groovy など) では、既存のオペレーター トークンから新しいオペレーターを定義できます。

于 2012-04-23T20:48:29.320 に答える
0

いいえ、Java では演算子の特殊記号をオーバーロードできません。

于 2012-04-23T20:42:34.283 に答える
0

いいえ。そうすべきではない理由については、この記事をお読みください: http://java.dzone.com/articles/why-java-doesnt-need-operator

Java プラットフォームでこれを実現するには、Scala などの別の言語を使用できます。- https://stackoverflow.com/a/1991348/1342121

于 2012-04-23T20:49:44.543 に答える