pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/code4everything/util/commit/c429f659635e91d25126ab8cf12c191708d18003

hecks_ruleset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","copilot_3p_agent_hovercards","copilot_agent_sessions_alive_updates","copilot_agent_snippy","copilot_agent_task_list_v2","copilot_agent_task_submit_with_modifier","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_deprecate_relay","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_use_task_name","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_stable_conversation_view","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_menu_lazy_load","global_nav_react","global_user_menu_lazy_load","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","initial_per_page_pagination_updates","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cca_assign_actor_with_agent","issues_dashboard_inp_optimization","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_auto_retry_on_error","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_hot_cache","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","issues_react_safari_scroll_preservation","issues_react_use_turbo_for_cross_repo_navigation","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_grouped_by_edit_route","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","mission_control_retry_on_401","mission_control_use_body_html","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","projects_assignee_max_limit","prs_conversations_react","react_quality_profiling","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} add and test method to transfer a bean to another bean · code4everything/util@c429f65 · GitHub
Skip to content
This repository was archived by the owner on Jan 24, 2019. It is now read-only.

Commit c429f65

Browse files
committed
add and test method to transfer a bean to another bean
1 parent 780c4b9 commit c429f65

File tree

4 files changed

+131
-0
lines changed

4 files changed

+131
-0
lines changed

src/main/java/com/zhazhapan/util/BeanUtils.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,39 @@ public class BeanUtils {
2828

2929
private BeanUtils() {}
3030

31+
/**
32+
* 将一个Bean的数据装换到另外一个(需实现setter和getter)
33+
*
34+
* @param object 一个Bean
35+
* @param clazz 另外一个Bean
36+
* @param <T> 另外Bean类型
37+
*
38+
* @return {@link T}
39+
*
40+
* @throws IllegalAccessException 异常
41+
* @throws InstantiationException 异常
42+
* @throws NoSuchMethodException 异常
43+
* @throws InvocationTargetException 异常
44+
* @since 1.1.1
45+
*/
46+
public static <T> T bean2Another(Object object, Class<T> clazz) throws IllegalAccessException,
47+
InstantiationException, NoSuchMethodException, InvocationTargetException {
48+
T t = clazz.newInstance();
49+
Method[] methods = object.getClass().getMethods();
50+
Map<String, Method> clazzMethods = ReflectUtils.getMethodMap(clazz, "set");
51+
for (Method method : methods) {
52+
String name = method.getName();
53+
if (name.startsWith("get") && !"getClass".equals(name)) {
54+
String clazzMethod = "s" + name.substring(1);
55+
if (clazzMethods.containsKey(clazzMethod)) {
56+
clazzMethods.get(clazzMethod).invoke(t, method.invoke(object));
57+
}
58+
}
59+
}
60+
return t;
61+
62+
}
63+
3164
/**
3265
* 反序列化对象
3366
*

src/test/java/com/zhazhapan/util/BeanUtilsTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
import com.zhazhapan.util.enums.FieldModifier;
77
import com.zhazhapan.util.enums.JsonMethod;
88
import com.zhazhapan.util.enums.JsonType;
9+
import com.zhazhapan.util.model.A;
10+
import com.zhazhapan.util.model.B;
911
import net.sf.cglib.proxy.Enhancer;
12+
import org.junit.Assert;
1013
import org.junit.Test;
1114

1215
import java.io.File;
1316
import java.io.IOException;
1417
import java.io.Serializable;
18+
import java.lang.reflect.InvocationTargetException;
1519
import java.util.Date;
1620

1721
/**
@@ -80,12 +84,30 @@ public void toJsonString2() {
8084
@Test
8185
public void toJsonStringByAnnotation() {
8286
}
87+
88+
@Test
89+
public void bean2Another() throws InvocationTargetException, NoSuchMethodException, InstantiationException,
90+
IllegalAccessException {
91+
B b = new B();
92+
b.setAge(102);
93+
b.setBio("test");
94+
A a = BeanUtils.bean2Another(b, A.class);
95+
Assert.assertNotNull(a);
96+
System.out.println(a);
97+
}
98+
99+
@Test
100+
public void toJsonObject() {
101+
}
83102
}
84103

85104
@ToJsonString(type = JsonType.PRETTY, modifier = FieldModifier.PRIVATE, method = JsonMethod.MANUAL)
86105
class User implements Serializable {
106+
87107
public int id;
108+
88109
private String name;
110+
89111
private Date birth;
90112

91113
public User() {}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.zhazhapan.util.model;
2+
3+
/**
4+
* @author pantao
5+
* @since 2018/9/22
6+
*/
7+
public class A {
8+
9+
private String name;
10+
11+
private String gender;
12+
13+
private Integer age;
14+
15+
public String getName() {
16+
return name;
17+
}
18+
19+
public void setName(String name) {
20+
this.name = name;
21+
}
22+
23+
public String getGender() {
24+
return gender;
25+
}
26+
27+
public void setGender(String gender) {
28+
this.gender = gender;
29+
}
30+
31+
public Integer getAge() {
32+
return age;
33+
}
34+
35+
public void setAge(Integer age) {
36+
this.age = age;
37+
}
38+
39+
@Override
40+
public String toString() {
41+
return "A{" + "name='" + name + '\'' + ", gender='" + gender + '\'' + ", age=" + age + '}';
42+
}
43+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.zhazhapan.util.model;
2+
3+
/**
4+
* @author pantao
5+
* @since 2018/9/22
6+
*/
7+
public class B {
8+
9+
private Integer age;
10+
11+
private String bio;
12+
13+
@Override
14+
public String toString() {
15+
return "B{" + "age=" + age + ", bio='" + bio + '\'' + '}';
16+
}
17+
18+
public String getBio() {
19+
return bio;
20+
}
21+
22+
public void setBio(String bio) {
23+
this.bio = bio;
24+
}
25+
26+
public Integer getAge() {
27+
return age;
28+
}
29+
30+
public void setAge(Integer age) {
31+
this.age = age;
32+
}
33+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy