日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

小程序可不可以汉字命名_不可将您的方法命名为“等于”

發(fā)布時(shí)間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小程序可不可以汉字命名_不可将您的方法命名为“等于” 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小程序可不可以漢字命名

(當(dāng)然,除非您確實(shí)重寫了Object.equals() )。

我偶然發(fā)現(xiàn)了用戶Frank提出的一個(gè)非常奇怪的Stack Overflow問(wèn)題 :

為什么Java的Area#equals方法不能覆蓋Object#equals?

有趣的是,有一個(gè)Area.equals(Area)方法真正采用Area參數(shù),而不是Object.equals()聲明的Object參數(shù)。 弗蘭克(Frank)發(fā)現(xiàn),這會(huì)導(dǎo)致令人討厭的行為:

@org.junit.Test public void testEquals() {java.awt.geom.Area a = new java.awt.geom.Area();java.awt.geom.Area b = new java.awt.geom.Area();assertTrue(a.equals(b)); // -> truejava.lang.Object o = b;assertTrue(a.equals(o)); // -> false }

從技術(shù)上講,以這種方式實(shí)現(xiàn)AWT的Area是正確的(因?yàn)橐矝](méi)有實(shí)現(xiàn)hashCode() ),但是Java解析方法的方式以及程序員像上面的代碼一樣消化編寫的代碼的方式,是重載equals方法確實(shí)是一個(gè)可怕的主意。

也沒(méi)有靜態(tài)等于

這些規(guī)則也適用于靜態(tài)equals()方法,例如Apache Commons Lang的

ObjectUtils.equals(Object o1, Object o2)

由于您無(wú)法靜態(tài)導(dǎo)入此equals方法,因此造成了混亂:

import static org.apache.commons.lang.ObjectUtils.equals;

現(xiàn)在,輸入以下內(nèi)容:

equals(obj1, obj2);

您將得到一個(gè)編譯器錯(cuò)誤:

Object類型中的equals(Object)方法不適用于參數(shù)(…,…)

這樣做的原因是,在當(dāng)前類及其父類型范圍內(nèi)的方法將始終隱藏以這種方式導(dǎo)入的任何內(nèi)容。 以下內(nèi)容也不起作用:

import static org.apache.commons.lang.ObjectUtils.defaultIfNull;public class Test {void test() {defaultIfNull(null, null);// ^^ compilation error here}void defaultIfNull() {} }

此堆棧溢出問(wèn)題中的詳細(xì)信息 。

結(jié)論

結(jié)論很簡(jiǎn)單。 永遠(yuǎn)不要重載Object聲明的任何方法 (當(dāng)然可以重寫)。 這包括:

  • clone()
  • equals()
  • finalize()
  • getClass()
  • hashCode()
  • notify()
  • notifyAll()
  • toString()
  • wait()

當(dāng)然,如果不首先在Object中聲明這些方法,那將是很棒的事情,但是那艘船已經(jīng)航行了20年。

翻譯自: https://www.javacodegeeks.com/2015/02/thou-shalt-not-name-thy-method-equals.html

小程序可不可以漢字命名

總結(jié)

以上是生活随笔為你收集整理的小程序可不可以汉字命名_不可将您的方法命名为“等于”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。