Lombok使用坑之屬性不區分大小寫

2021-10-24 13:11:17 字數 2987 閱讀 8134

實驗環境說明:

1:jdk 1.8.0_241

2:idea intellij 2018.3

3:lombok 1.18.8

由於fastjson漏洞比較多,所以,我調研換用jackson是否ok,在實驗的過程中發現了lombok的乙個細節,如果不注意,可能存在問題,問題比較簡單,**一貼基本就能看出來了!

4:原始碼如下所示

import lombok.allargsconstructor;

import lombok.data;

import lombok.noargsconstructor;

@data

@noargsconstructor

@allargsconstructor

public class testlombok

5:生成的反編譯位元組碼如下所示

public class testlombok 

public byte get_byte()

public double get_double()

public boolean is_boolean()

public boolean get_boolean()

public float get_float()

public string getmyname()

public string getmy_name()

public void set_long(long _long)

public void set_byte(byte _byte)

public void set_double(double _double)

public void set_boolean(boolean _boolean)

public void set_float(float _float)

public void setmyname(string myname)

public void setmy_name(string my_name)

public boolean equals(object o) else if (!(o instanceof testlombok)) else else if (this.get_long() != other.get_long()) else if (this.get_long() != other.get_long()) else if (this.get_byte() != other.get_byte()) else if (this.get_byte() != other.get_byte()) else if (double.compare(this.get_double(), other.get_double()) != 0) else if (double.compare(this.get_double(), other.get_double()) != 0) else

} else if (this$_boolean.equals(other$_boolean))

return false;

}object this$_boolean = this.get_boolean();

object other$_boolean = other.get_boolean();

if (this$_boolean == null)

} else if (!this$_boolean.equals(other$_boolean))

if (float.compare(this.get_float(), other.get_float()) != 0) else if (float.compare(this.get_float(), other.get_float()) != 0) else

} else if (this$myname.equals(other$myname))

return false;

}object this$myname = this.getmyname();

object other$myname = other.getmyname();

if (this$myname == null)

} else if (!this$myname.equals(other$myname))

label75:

} else if (this$myname.equals(other$myname))

return false;

}object this$my_name = this.getmy_name();

object other$my_name = other.getmy_name();

if (this$my_name == null)

} else if (!this$my_name.equals(other$my_name))

return true;}}

}}

protected boolean canequal(object other)

public int hashcode()

public string tostring()

public testlombok()

public testlombok(long _long, long _long, byte _byte, byte _byte, double _double, double _double, boolean _boolean, boolean _boolean, float _float, float _float, string myname, string myname, string myname, string my_name)

}

6:結論

6-1:自動生成的setter/getter方法少了,貌似屬性不區分大小寫

6-2:equals方法也是存在問題,某些屬性的getter方法使用錯誤

使用Android陰影屬性踩到的那些坑

使用android陰影屬性踩到的那些坑 在做專案的時候,對於fragment中乙個圓角按鈕設定陰影效果時連跌好幾次,特此記錄。陰影不生效 原本乙個普普通通的陰影效果,只需要在xml檔案中設定屬性android elevation 10dp 即可,可以通過設定這個大小來改變陰影的效果。這個屬性大概是設...

vue踩坑之全域性使用axios

前言 vue 原本有乙個官方推薦的 ajax 外掛程式 vue resource,但是自從 vue 更新到 2.0 之後,尤雨溪宣布停止更新vue resource,並推薦大家使用axios之後,越來越多的 vue 專案,都選擇 axios 來完成 ajax 請求,而大型專案會使用 vuex 來管理...

vue踩坑之全域性使用axios

之前一直使用的是 vue resource外掛程式,在主入口檔案引入import vueresource from vue resource 之後,直接使用vue.use vueresource 之後即可將該外掛程式全域性引用了 初用axios時,無腦的按照上面的步驟進行全域性引用,結果當時是慘慘的...