久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

Java 如何優(yōu)雅的拷貝對象屬性

瀏覽:4日期:2022-08-20 18:52:01

場景

在 Java 項目中,經(jīng)常遇到需要在對象之間拷貝屬性的問題。然而,除了直接使用 Getter/Stter 方法,我們還有其他的方法么?當(dāng)然有,例如 Apache Common Lang3 的 BeanUtils,然而 BeanUtils 卻無法完全滿足吾輩的需求,所以吾輩便自己封裝了一個,這里分享出來以供參考。

需要大量復(fù)制對象的屬性 對象之間的屬性名可能是不同的 對象之間的屬性類型可能是不同的

目標(biāo)

簡單易用的 API

copy: 指定需要拷貝的源對象和目標(biāo)對象 prop: 拷貝指定對象的字段 props: 拷貝指定對象的多個字段 exec: 執(zhí)行真正的拷貝操作 from: 重新開始添加其他對象的屬性 get: 返回當(dāng)前的目標(biāo)對象 config: 配置拷貝的一些策略

思路

定義門面類 BeanCopyUtil 用以暴露出一些 API 定義每個字段的操作類 BeanCopyField,保存對每個字段的操作 定義 BeanCopyConfig,用于配置拷貝屬性的策略 定義 BeanCopyOperator 作為拷貝的真正實現(xiàn)

圖解

Java 如何優(yōu)雅的拷貝對象屬性

實現(xiàn)

注:反射部分依賴于 joor, JDK1.8 請使用 joor-java-8

定義門面類 BeanCopyUtil 用以暴露出一些 API

/** * java bean 復(fù)制操作的工具類 * * @author rxliuli */public class BeanCopyUtil<F, T> { /** * 源對象 */ private final F from; /** * 目標(biāo)對象 */ private final T to; /** * 拷貝的字段信息列表 */ private final List<BeanCopyField> copyFieldList = new LinkedList<>(); /** * 配置信息 */ private BeanCopyConfig config = new BeanCopyConfig(); private BeanCopyUtil(F from, T to) { this.from = from; this.to = to; } /** * 指定需要拷貝的源對象和目標(biāo)對象 * * @param from 源對象 * @param to 目標(biāo)對象 * @param <F> 源對象類型 * @param <T> 目標(biāo)對象類型 * @return 一個 {@link BeanCopyUtil} 對象 */ public static <F, T> BeanCopyUtil<F, T> copy(F from, T to) { return new BeanCopyUtil<>(from, to); } /** * 拷貝指定對象的字段 * * @param fromField 源對象中的字段名 * @param toField 目標(biāo)對象中的字段名 * @param converter 將源對象中字段轉(zhuǎn)換為目標(biāo)對象字段類型的轉(zhuǎn)換器 * @return 返回 {@code this} */ public BeanCopyUtil<F, T> prop(String fromField, String toField, Function<? super Object, ? super Object> converter) { copyFieldList.add(new BeanCopyField(fromField, toField, converter)); return this; } /** * 拷貝指定對象的字段 * * @param fromField 源對象中的字段名 * @param toField 目標(biāo)對象中的字段名 * @return 返回 {@code this} */ public BeanCopyUtil<F, T> prop(String fromField, String toField) { return prop(fromField, toField, null); } /** * 拷貝指定對象的字段 * * @param field 源對象中與目標(biāo)對象中的字段名 * @param converter 將源對象中字段轉(zhuǎn)換為目標(biāo)對象字段類型的轉(zhuǎn)換器 * @return 返回 {@code this} */ public BeanCopyUtil<F, T> prop(String field, Function<? super Object, ? super Object> converter) { return prop(field, field, converter); } /** * 拷貝指定對象的字段 * * @param field 源對象中與目標(biāo)對象中的字段名 * @return 返回 {@code this} */ public BeanCopyUtil<F, T> prop(String field) { return prop(field, field, null); } /** * 拷貝指定對象的多個字段 * * @param fields 源對象中與目標(biāo)對象中的多個字段名 * @return 返回 {@code this} */ public BeanCopyUtil<F, T> props(String... fields) { for (String field : fields) { prop(field); } return this; } /** * 執(zhí)行真正的拷貝操作 * * @return 返回 {@code this} */ public BeanCopyUtil<F, T> exec() { new BeanCopyOperator<>(from, to, copyFieldList, config).copy(); return this; } /** * 重新開始添加其他對象的屬性 * 用于在執(zhí)行完 {@link #exec()} 之后還想復(fù)制其它對象的屬性 * * @param from 源對象 * @param <R> 源對象類型 * @return 一個新的 {@link BeanCopyUtil} 對象 */ public <R> BeanCopyUtil<R, T> from(R from) { return new BeanCopyUtil<>(from, to); } /** * 返回當(dāng)前的目標(biāo)對象 * * @return 當(dāng)前的目標(biāo)對象 */ public T get() { return to; } /** * 配置拷貝的一些策略 * * @param config 拷貝配置對象 * @return 返回 {@code this} */ public BeanCopyUtil<F, T> config(BeanCopyConfig config) { this.config = config; return this; }}

定義每個字段的操作類 BeanCopyField,保存對每個字段的操作

/** * 拷貝屬性的每一個字段的選項 * * @author rxliuli */public class BeanCopyField { private String from; private String to; private Function<? super Object, ? super Object> converter; public BeanCopyField() { } public BeanCopyField(String from, String to, Function<? super Object, ? super Object> converter) { this.from = from; this.to = to; this.converter = converter; } public String getFrom() { return from; } public BeanCopyField setFrom(String from) { this.from = from; return this; } public String getTo() { return to; } public BeanCopyField setTo(String to) { this.to = to; return this; } public Function<? super Object, ? super Object> getConverter() { return converter; } public BeanCopyField setConverter(Function<? super Object, ? super Object> converter) { this.converter = converter; return this; }}

定義 BeanCopyConfig,用于配置拷貝屬性的策略

/** * 拷貝屬性的配置 * * @author rxliuli */public class BeanCopyConfig { /** * 同名的字段自動復(fù)制 */ private boolean same = true; /** * 覆蓋同名的字段 */ private boolean override = true; /** * 忽略 {@code null} 的源對象屬性 */ private boolean ignoreNull = true; /** * 嘗試進(jìn)行自動轉(zhuǎn)換 */ private boolean converter = true; public BeanCopyConfig() { } public BeanCopyConfig(boolean same, boolean override, boolean ignoreNull, boolean converter) { this.same = same; this.override = override; this.ignoreNull = ignoreNull; this.converter = converter; } public boolean isSame() { return same; } public BeanCopyConfig setSame(boolean same) { this.same = same; return this; } public boolean isOverride() { return override; } public BeanCopyConfig setOverride(boolean override) { this.override = override; return this; } public boolean isIgnoreNull() { return ignoreNull; } public BeanCopyConfig setIgnoreNull(boolean ignoreNull) { this.ignoreNull = ignoreNull; return this; } public boolean isConverter() { return converter; } public BeanCopyConfig setConverter(boolean converter) { this.converter = converter; return this; }}

定義 BeanCopyOperator 作為拷貝的真正實現(xiàn)

/** * 真正執(zhí)行 copy 屬性的類 * * @author rxliuli */public class BeanCopyOperator<F, T> { private static final Logger log = LoggerFactory.getLogger(BeanCopyUtil.class); private final F from; private final T to; private final BeanCopyConfig config; private List<BeanCopyField> copyFieldList; public BeanCopyOperator(F from, T to, List<BeanCopyField> copyFieldList, BeanCopyConfig config) { this.from = from; this.to = to; this.copyFieldList = copyFieldList; this.config = config; } public void copy() { //獲取到兩個對象所有的屬性 final Map<String, Reflect> fromFields = Reflect.on(from).fields(); final Reflect to = Reflect.on(this.to); final Map<String, Reflect> toFields = to.fields(); //過濾出所有相同字段名的字段并進(jìn)行拷貝 if (config.isSame()) { final Map<ListUtil.ListDiffState, List<String>> different = ListUtil.different(new ArrayList<>(fromFields.keySet()), new ArrayList<>(toFields.keySet())); copyFieldList = Stream.concat(different.get(ListUtil.ListDiffState.common).stream() .map(s -> new BeanCopyField(s, s, null)), copyFieldList.stream()) .collect(Collectors.toList()); } //根據(jù)拷貝字段列表進(jìn)行拷貝 copyFieldList.stream()//忽略空值.filter(beanCopyField -> !config.isIgnoreNull() || fromFields.get(beanCopyField.getFrom()).get() != null)//覆蓋屬性.filter(beanCopyField -> config.isOverride() || toFields.get(beanCopyField.getTo()).get() == null)//如果沒有轉(zhuǎn)換器,則使用默認(rèn)的轉(zhuǎn)換器.peek(beanCopyField -> { if (beanCopyField.getConverter() == null) { beanCopyField.setConverter(Function.identity()); }}).forEach(beanCopyField -> { final String fromField = beanCopyField.getFrom(); final F from = fromFields.get(fromField).get(); final String toField = beanCopyField.getTo(); try { to.set(toField, beanCopyField.getConverter().apply(from)); } catch (ReflectException e) { log.warn('Copy field failed, from {} to {}, exception is {}', fromField, toField, e.getMessage()); }}); }}

使用

使用流程圖

Java 如何優(yōu)雅的拷貝對象屬性

測試

代碼寫完了,讓我們測試一下!

public class BeanCopyUtilTest { private final Logger log = LoggerFactory.getLogger(getClass()); private Student student; private Teacher teacher; @Before public void before() { student = new Student('琉璃', 10, '女', 4); teacher = new Teacher(); } @Test public void copy() { //簡單的復(fù)制(類似于 BeanUtils.copyProperties) BeanCopyUtil.copy(student, teacher).exec(); log.info('teacher: {}', teacher); assertThat(teacher).extracting('age').containsOnlyOnce(student.getAge()); } @Test public void prop() { //不同名字的屬性 BeanCopyUtil.copy(student, teacher).prop('sex', 'sex', sex -> Objects.equals(sex, '男')).prop('realname', 'name').exec(); assertThat(teacher).extracting('name', 'age', 'sex').containsOnlyOnce(student.getRealname(), student.getAge(), false); } @Test public void prop1() { //不存的屬性 assertThat(BeanCopyUtil.copy(student, teacher).prop('sex', 'sex', sex -> Objects.equals(sex, '男')).prop('realname', 'name2').exec().get()).extracting('age', 'sex').containsOnlyOnce(student.getAge(), false); } @Test public void from() { final Teacher lingMeng = new Teacher().setName('靈夢').setAge(17); //測試 from 是否覆蓋 assertThat(BeanCopyUtil.copy(student, teacher).prop('sex', 'sex', sex -> Objects.equals(sex, '男')).prop('realname', 'name').exec().from(lingMeng).exec().get()).extracting('name', 'age', 'sex').containsOnlyOnce(lingMeng.getName(), lingMeng.getAge(), false); } @Test public void get() { //測試 get 是否有效 assertThat(BeanCopyUtil.copy(student, teacher).prop('sex', 'sex', sex -> Objects.equals(sex, '男')).prop('realname', 'name').exec().get()).extracting('name', 'age', 'sex').containsOnlyOnce(student.getRealname(), student.getAge(), false); } @Test public void config() { //不自動復(fù)制同名屬性 assertThat(BeanCopyUtil.copy(new Student().setAge(15), new Teacher()).config(new BeanCopyConfig().setSame(false)).exec().get()).extracting('age').containsOnlyNulls(); //不覆蓋不為空的屬性 assertThat(BeanCopyUtil.copy(new Student().setAge(15), new Teacher().setAge(10)).config(new BeanCopyConfig().setOverride(false)).exec().get()).extracting('age').containsOnlyOnce(10); //不忽略源對象不為空的屬性 assertThat(BeanCopyUtil.copy(new Student(), student).config(new BeanCopyConfig().setIgnoreNull(false)).exec().get()).extracting('realname', 'age', 'sex', 'grade').containsOnlyNulls(); } /** * 測試學(xué)生類 */ private static class Student { /** * 姓名 */ private String realname; /** * 年齡 */ private Integer age; /** * 性別,男/女 */ private String sex; /** * 年級,1 - 6 */ private Integer grade; public Student() { } public Student(String realname, Integer age, String sex, Integer grade) { this.realname = realname; this.age = age; this.sex = sex; this.grade = grade; } public String getRealname() { return realname; } public Student setRealname(String realname) { this.realname = realname; return this; } public Integer getAge() { return age; } public Student setAge(Integer age) { this.age = age; return this; } public String getSex() { return sex; } public Student setSex(String sex) { this.sex = sex; return this; } public Integer getGrade() { return grade; } public Student setGrade(Integer grade) { this.grade = grade; return this; } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } } /** * 測試教師類 */ private static class Teacher { /** * 姓名 */ private String name; /** * 年齡 */ private Integer age; /** * 性別,true 男,false 女 */ private Boolean sex; /** * 職位 */ private String post; public Teacher() { } public Teacher(String name, Integer age, Boolean sex, String post) { this.name = name; this.age = age; this.sex = sex; this.post = post; } public String getName() { return name; } public Teacher setName(String name) { this.name = name; return this; } public Integer getAge() { return age; } public Teacher setAge(Integer age) { this.age = age; return this; } public Boolean getSex() { return sex; } public Teacher setSex(Boolean sex) { this.sex = sex; return this; } public String getPost() { return post; } public Teacher setPost(String post) { this.post = post; return this; } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } }}

如果沒有發(fā)生什么意外,那么一切將能夠正常運(yùn)行!

好了,那么關(guān)于在 Java 中優(yōu)雅的拷貝對象屬性就到這里啦

以上就是Java 如何優(yōu)雅的拷貝對象屬性的詳細(xì)內(nèi)容,更多關(guān)于Java 拷貝對象屬性的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲人成在线播放 | 黄色a级| 日韩视频免费在线 | 插插插干干干 | 91视频观看 | 色必久久 | 免费在线观看一区二区 | www,四虎 | 国产成人免费 | 久久99久久99精品免视看婷婷 | 国产精品乱码人人做人人爱 | 中文字幕欧美在线观看 | 国产精品自产av一区二区三区 | 在线观看成人网 | 亚洲国产高清高潮精品美女 | 天天综合网久久综合网 | 夜本色| 国产婷婷精品av在线 | 亚洲精品一区中文字幕乱码 | 中文字幕_第2页_高清免费在线 | 久久大陆| 91社区在线观看高清 | 黄视频网站免费观看 | 久久精品无码一区二区日韩av | 9999久久久久 | 91午夜激情| 久久国内精品 | 98久久久 | 欧美一区久久 | 91av在线免费看 | 日韩成人在线免费视频 | 日韩在线播放一区二区 | 91精品久久久久久久久中文字幕 | 久久99精品久久久久久噜噜 | 青青久视频 | 玖玖操 | 精品中文字幕一区二区 | 国产一区在线视频 | 国产96在线视频 | 成人在线小视频 | 久久国产欧美一区二区三区精品 | 欧美一区二区精品 | 久久久久无码国产精品一区 | 日本伊人网站 | 91视频一区二区 | 国产一区二区三区精品久久久 | 久久六月 | 国产乱码一区二区三区在线观看 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 97色在线视频 | 日韩另类| 欧美精品一区二区在线观看 | 成人午夜电影在线 | 欧美国产精品一区 | 91中文在线观看 | 国产一级片儿 | 亚洲精品一区二区网址 | 午夜看片 | 欧美日韩国产高清 | 亚洲不卡| 欧美日韩高清在线一区 | 欧美精品一区在线发布 | 国产一级一级特黄女人精品毛片 | 亚洲精品一二三区 | 在线视频 中文字幕 | 91久久精品一区二区二区 | 久久久久久久久国产 | 日本午夜精品 | 精品国产黄a∨片高清在线 99热婷婷 | 久久精品在线 | 久久国产精品免费一区二区三区 | 日韩精品免费在线观看 | 日韩av一区二区三区在线 | 中文字幕高清视频 | 久草视频在线观 | av三级在线观看 | 久久久久久久一区 | 亚洲精品视频播放 | 丁香婷婷在线观看 | 亚洲美女网站 | 亚州精品天堂中文字幕 | 日穴视频在线观看 | 一道本一区| 国产亚洲女人久久久久毛片 | 精品视频免费在线 | 中文字幕1区 | 久久久99日产 | 国产精品日本欧美一区二区三区 | 精品国产精品三级精品av网址 | 精品视频免费观看 | 亚洲国产精品99久久久久久久久 | 国产成人精品综合 | 午夜成人免费电影 | 黄色一级片看看 | 伊人电影综合网 | 国产女人网 | 在线免费观看黄色 | 久草国产视频 | 国产美女永久免费无遮挡 | 欧美日本亚洲 | 国产伦精品一区二区三区四区视频 | 欧美激情欧美激情在线五月 | av不卡在线播放 | 亚洲视频一区 | 毛片av片 | 国产视频99 | 久久99这里只有精品 | 欧美精品久久久 | 国产精品九九九 | 99久久精品国产一区二区成人 | 天天亚洲综合 | 国产一区影院 | www麻豆 | 亚洲欧洲视频在线 | 日韩免费一级 | 免费看一区二区三区 | 亚洲日韩aⅴ在线视频 | 欧美日本韩国一区二区三区 | 国产精品视频一区二区三区 | 一区二区三区四区在线播放 | 欧美日本免费一区二区三区 | 亚洲免费婷婷 | 亚洲国产精品视频 | 成人激情视频在线播放 | 亚洲精品视频国产 | 一区二区精品 | 国产精品视频一区二区三区 | 一级特黄网站 | 日韩一区二区在线免费 | 久久久久综合狠狠综合日本高清 | 成人精品视频在线观看 | 欧美精品91 | 欧美亚洲一区二区三区 | 一区二区三区自拍 | 欧美色欧美亚洲另类七区 | 中文字幕av第一页 | 午夜不卡福利视频 | 在线看成人片 | 女同videos另类 | 这里只有精品视频 | 亚洲免费在线观看 | 色十八| 精品av| 久久伊 | 爱干视频 | 日韩免费精品 | 91精品国产99久久久 | 色婷婷国产精品综合在线观看 | 久久免费小视频 | 午夜影院a| 国产精品不卡 | 人人干人人干人人干 | 欧美日韩高清 | 久久青 | 中文字幕日韩欧美一区二区三区 | 国产精品久久久久久亚洲调教 | 久草视频在线首页 | 永久91嫩草亚洲精品人人 | 91精品国产乱码久久久久久 | 精品国产精品国产偷麻豆 | a中文在线视频 | 免费一区二区三区 | 国产综合久久久久久鬼色 | av国产精品 | 一本大道综合伊人精品热热 | 国产一二三四在线 | 成人精品免费视频 | 欧美成人在线网站 | 久久生活片 | 毛片免费视频 | 精品亚洲区 | 国产激情在线 | 国产综合亚洲精品一区二 | 成人精品久久久 | 天天操夜夜拍 | 日韩精品久久 | 免费观看一区二区三区毛片软件 | 女人久久久久久久 | 亚洲精品国产第一综合99久久 | 国产成人久久精品麻豆二区 | 一区二区亚洲 | 欧美色图另类 | 精品久久久久久 | 色吊丝在线| 午夜99 | 蜜桃视频网站在线观看 | 蜜月久久99静品久久久久久 | 一区二区中文字幕 | 久久精品久久久久久久久久16 | 久久国产精品久久精品 | 日韩一区二区在线视频 | 精品成人一区二区 | 国产xvideos免费视频播放 | 操操操操操操 | 黄色a视频| av免费在线播放 | 精品视频一区二区在线 | 久久久91| 免费看国产片在线观看 | 久久一级 | 精品www| 色先锋资源 | theporn国产在线精品 | 亚洲成av人片一区二区梦乃 | 成人免费一区二区三区视频网站 | 精品久久久久久久久久久院品网 | 中文字幕欧美日韩 | 一级日韩电影 | 亚洲精品视频免费 | 天天综合网7799精品 | 国产三级在线播放 | 91精品国产高清久久久久久久久 | 欧美中文字幕在线观看 | 91午夜伦伦电影理论片 | 91精品视频在线播放 | 一区二区日韩在线观看 | 亚洲一区久久 | 精品在线播放 | 国产精品一二三四区 | 久久精品视频网站 | 日本aaaa| 亚洲精品一区二区三区在线看 | 精品国产青草久久久久福利 | 99re6在线视频精品免费 | 人人看超碰 | 91在线高清观看 | 澳门av | 成人黄色电影小说 | 黄色天堂在线观看 | 中文字幕亚洲精品 | 日本精品免费 | 成人欧美一区二区三区在线播放 | 精品综合久久久 | 9999国产精品 | 91精品一区二区三区久久久久久 | 国产羞羞视频免费在线观看 | 国产福利一区二区三区四区 | 亚洲欧洲日本国产 | 日韩一区久久 | 一区二区三区四区精品 | 一区欧美| 亚洲日日 | 中文字幕 在线观看 | 夜久久 | 日本不卡免费新一二三区 | 懂色av色香蕉一区二区蜜桃 | 日韩大尺度电影在线观看 | 日本高清视频网站www | 香蕉综合久久 | av女人的天堂 | 久久久久久久国产 | 91.成人天堂一区 | 日韩精品视频网 | 亚洲日本精品视频 | 欧美综合激情 | www国产成人免费观看视频,深夜成人网 | 欧美一级成人欧美性视频播放 | 黄色大片免费网站 | 欧美精品免费在线观看 | 国产视频福利在线 | 欧美一级精品片在线看 | 欧美日韩国产在线观看 | 亚洲成人免费观看 | 在线观看欧美日韩 | 日韩视频区 | 91视频网 | 国产亚洲成av人片在线观看桃 | 97色免费视频 | 久久99久久98精品免观看软件 | 成人国产精品久久 | 免费在线成人av | 国产亚洲精品一区二区 | 国产精品3区 | 亚洲日韩成人 | 精品毛片 | 99久久精品免费 | 日韩欧美综合 | 亚洲视频在线观看 | 91精品国产乱码久久久久久久久 | 亚洲一区中文 | www国产成人免费观看视频 | 成年人黄色一级片 | 91短视频版在线观看免费大全 | 91p在线观看 | 日韩午夜 | 亚洲天堂av网 | 韩日精品在线观看 | 九九福利| 成人看片免费 | 欧美成人精品一区二区三区 | 日韩有码在线播放 | 欧美亚洲另类丝袜综合网动图 | 日韩毛片 | 天天操天天插 | 久久一| 国产精品久久久久久久 | 午夜影院色 | 欧美午夜一区二区三区免费大片 | a国产精品 | 免费看的毛片 | 成人在线小视频 | 99这里只有精品 | 日日操日日操 | 欧美日本韩国一区二区 | 日本 国产 欧美 | 欧美bbbxxx| 久久aⅴ乱码一区二区三区 91综合网 | 亚洲成人一区二区三区 | 男女羞羞视频免费在线观看 | 欧美美乳 | 羞羞视频网站在线看 | 国产高清精品一区二区三区 | 日韩中文在线 | 欧美一区二区三区在线视频 | 曰本人一级毛片免费完整视频 | 精品视频久久 | 国产一区二区免费 | 久久九精品| 欧美污污 | 91日韩欧美 | www国产成人免费观看视频,深夜成人网 | 欧美精品成人在线视频 | 国产色网| 精品久久97 | av免费在线观看网址 | 久视频在线观看 | 欧美成人免费视频 | 色视频网| 在线视频一区二区 | 狠狠久久综合 | www.久久久.com| 亚洲美女视频 | 天天干狠狠 | 蜜桃一区二区 | 三级在线观看 | 97国产一区二区精品久久呦 | 亚洲精品视频免费观看 | 久久噜噜噜精品国产亚洲综合 | 中文字幕在线观看1 | 谁有毛片| 在线不卡视频 | 一区二区在线不卡 | 国产精品美女久久久久久久久久久 | 国产精品免费看 | 91精品国产综合久久久久久 | 羞羞视频在线免费观看 | 日韩中文在线观看 | 久久99影视 | 国产日韩欧美一区二区 | 亚洲精品一区在线观看 | 日韩免费网站 | 国产一级黄色av | 亚洲综合色视频在线观看 | 亚洲欧美日韩天堂 | 精品一区二区三区免费 | 日韩精品视频免费在线观看 | 在线视频中文字幕 | 日av一区 | 成人国产免费视频 | 天天干天天看天天操 | 国产精品成人一区二区 | 啊v在线视频| 亚洲 中文 欧美 日韩 在线观看 | 久久久久久网址 | 中文字幕av亚洲精品一部二部 | 久久伊人一区二区 | 午夜成人免费视频 | 亚洲欧美精品一区二区 | av网站免费| 亚洲国产精品一区二区久久 | 成人免费视频网站在线观看 | 亚洲视频在线播放 | 欧美午夜一区 | 日韩精品免费在线观看 | 久久综合九色综合欧美狠狠 | 美女视频一区 | 国产精品网站在线 | 91短视频版在线观看www免费 | 欧美日韩电影一区二区 | 国产一区二区三区在线 | 久久在线播放 | 久久久天天 | 亚洲一区二区在线免费观看 | 久久久久久国产精品美女 | 精品国产欧美一区二区 | 欧美一区二区三区在线视频 | 亚洲一区二区视频在线观看 | 欧美一区二区三区aa大片漫 | 久久久影院 | 婷婷免费在线观看 | 91久久久久久久久 | 国产成人一区二区三区影院在线 | 香蕉久久久久久 | 欧美一级片 | 亚洲精品久久久久999中文字幕 | 久久综合成人精品亚洲另类欧美 | 国产精品成人久久久久 | 亚洲色域网 | 国产精品久久一区二区三区 | 久久久精品久久久久 | 欧洲一级视频 | 欧美亚洲日本 | 久久久国产精品视频 | 色综合久久天天综合网 | 久久一级 | 欧美一区免费 | 性欧美大战久久久久久久免费观看 | 久久国产精品99久久久久久老狼 | 羞羞视频免费观看网站 | 日韩欧美在线一区 | 久久久中文字幕 | 久久成人一区 | 野狼在线社区2017入口 | 99国产精品久久久久久久 | 亚洲一区中文字幕在线观看 | 亚洲精选一区二区 | 久久一区国产 | 伊人久久国产 | 成人美女免费网站视频 | 日韩久久影院 | 自拍视频网 | 99爱视频| 亚洲精品日韩激情在线电影 | 国产美女av在线 | 欧美国产精品一区二区 | 国产在线精品一区 | 国产欧美日韩一区 | 亚洲一区二区三区 | 一区二区三区精品视频 | 亚洲一区中文 | 欧美国产一区二区三区 | 视频一区中文字幕 | 午夜精品一区二区三区在线视频 | 久久久男人天堂 | 欧美日韩国产在线观看 | 狠狠操精品视频 | 欧美日韩视频一区二区 | 欧美日本免费一区二区三区 | 国产精品国产精品国产专区不片 | 成人在线视频一区 | 成年人在线视频播放 | 成人日韩 | 欧美亚洲日本 | 欧美成人免费在线视频 | 亚洲大尺度视频 | 中文字幕在线看 | 99re视频在线播放 | 成人免费在线视频 | 免费黄色片在线观看 | 国产精品三级在线 | 日韩成人不卡 | 国产在线91 | 91精品国产乱码久久久久久久久 | 国产精品久久久久婷婷二区次 | 久久91精品国产91久久跳 | 亚洲免费在线观看 | 日韩一本 | 国产传媒在线视频 | 久久精品无码一区二区日韩av | 欧美日韩在线一 | 桃色五月| 国产欧美一二三区在线粉嫩 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 国产精品中文字幕在线 | 国产精品美女久久久久久久久久久 | 亚洲二区在线 | 欧美视频综合 | 欧美xxxx做受欧美 | 中国电影黄色一级片免费观看 | 中文av在线播放 | 一区二区三区免费看 | 97色在线视频 | 四虎视频| 国色天香成人网 | 亚洲一区 | 亚洲欧美国产一区二区 | 国产高清精品在线 | 六月综合激情 | 欧美一区二区三区 | 国产亚洲精品久久久久久久 | 亚洲视频一区在线 | 欧美精产国品一二三区 | 99精品国产在热久久 | 黄色小视频在线免费观看 | 青草视频在线免费观看 | 91精品国产91久久久久久吃药 | 国产精品久久久久国产精品 | 免费看国产一级片 | 天堂精品一区二区三区 | 福利在线看 | 精品久久久一区 | 成人精品视频99在线观看免费 | 亚洲成人第一 | www中文字幕| 综合伊人 | 欧美日韩视频在线播放 | 四虎影院入口 | 视频二区 | 久久午夜综合久久 | 精品欧美一区二区三区久久久 | 在线视频中文字幕 | 老司机在线精品视频 | 偷拍做爰吃奶视频免费看 | 狠狠综合久久av一区二区老牛 | 色偷偷噜噜噜亚洲男人 | 久久99操| 成人免费在线视频播放 | 日韩在线国产精品 | 国产精品入口麻豆www | av在线一区二区三区 | 免费视频一区 | 日韩av在线中文字幕 | 国产激情偷乱视频一区二区三区 | 国产精品久久久久久福利一牛影视 | 天天操,夜夜操 | 最新超碰 | 密色视频| 情一色一乱一欲一区二区 | 亚洲精品一区二区三区 | 亚洲午夜电影 | 91精品国产一区二区三区蜜臀 | 成人av免费观看 | www国产xxx | 亚洲精品在线网站 | 亚洲一区中文字幕 | 亚洲精品国精品久久99热 | 欧美a√| 成人深夜在线观看 | 韩国精品一区二区三区 | 国产一区二区三区在线视频 | 伊人网av| 自拍视频免费 | 欧美日韩中文 | 伊人久久国产 | 久久久精彩视频 | 中文字幕av第一页 | 日韩免费精品 | 日韩在线成人 | 成人精品视频 | 国产欧美精品一区二区三区 | 国产一区免费 | 岛国av在线 | 久久久免费观看 | 亚洲精品乱码久久久久久不卡 | 国产一区二区三区久久久久久久久 | 插插插干干干 | 6080yy精品一区二区三区 | 黄色国产精品 | 欧美一区二区三区视频 | 天天久久 | 91免费影视 | 在线中文日韩 | www.成人| 北条麻妃一区二区三区中文字幕 | 夜夜艹 | 国产日韩一区二区三区 | 精品久久一区二区 | 最新午夜 | 日韩精品在线播放 | 97国产超碰 | 欧美一区二区三区在线看 | 嫩草成人影院 | 犬夜叉在线观看 | 日干夜操| 午夜影院| 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 成人免费福利 | 综合婷婷 | 精品一区二区三区在线观看视频 | 午夜免费视频福利 | 久久久中文字幕 | 国产福利免费视频 | 国产精品.xx视频.xxtv | 色婷婷基地 | 国产一区二区三区在线 | 国产精品视频一区二区三区不卡 | 久久免费黄色网址 | 色999视频 | 国产成人一区二区三区 | 久久香蕉国产视频 | 91电影在线观看 | 国产夜夜夜 | 亚洲首页 | 国产精品国色综合久久 | 日本一级在线观看 | 99精品国产热久久91蜜凸 | 成人av片在线观看 | 亚洲国产二区 | 国产成人综合在线观看 | 欧美日韩在线视频一区 | 黄a在线观看 | 国产1级片 | 成人免费在线电影 | 国产精品久久久久久久久久东京 | 久久综合久久综合久久 | 日本xxww视频免费 | 中文字幕精品三区 | heyzo在线观看| 国产精品一区久久久 | 97在线观看| 国产高清在线精品一区二区三区 | 亚洲毛片在线 | 亚洲欧美在线观看 | 欧洲一区在线 | 中文字幕在线精品 | av在线三级 | 日韩精品www | 操操操av| 日韩欧美精品在线 | 欧美一二三四成人免费视频 | 国产激情在线观看 | 日本激情视频在线播放 | 天天综合91 | 黄色av网站免费 | 欧美福利视频 |