CINXE.COM
Reflection (khoa học máy tính) – Wikipedia tiếng Việt
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="vi" dir="ltr"> <head> <meta charset="UTF-8"> <title>Reflection (khoa học máy tính) – Wikipedia tiếng Việt</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )viwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t.",".\t,"],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"vi normal","wgMonthNames":["","tháng 1","tháng 2","tháng 3","tháng 4","tháng 5","tháng 6","tháng 7","tháng 8","tháng 9","tháng 10","tháng 11","tháng 12"],"wgRequestId":"93145a9e-7b44-4619-86b8-ff75f0e84b22","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Reflection_(khoa_học_máy_tính)","wgTitle":"Reflection (khoa học máy tính)","wgCurRevisionId":69425319,"wgRevisionId":69425319,"wgArticleId":19201,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Bản mẫu webarchive dùng liên kết wayback","Quản lý CS1: sử dụng tham số tác giả","Bài viết có trích dẫn không khớp","Cấu trúc lập trình"],"wgPageViewLanguage":"vi","wgPageContentLanguage":"vi","wgPageContentModel":"wikitext","wgRelevantPageName":"Reflection_(khoa_học_máy_tính)","wgRelevantArticleId":19201,"wgIsProbablyEditable":true, "wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"vi","pageLanguageDir":"ltr","pageVariantFallbacks":"vi"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q1056451","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false, "wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.charinsert-styles":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.did_you_mean","ext.gadget.ReferenceTooltips","ext.gadget.AVIM","ext.gadget.AVIM_portlet","ext.gadget.charinsert","ext.gadget.refToolbar","ext.gadget.wikibugs", "ext.gadget.purgetab","ext.gadget.switcher","ext.gadget.AdvancedSiteNotices","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=vi&modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=vi&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=vi&modules=ext.gadget.charinsert-styles&only=styles&skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=vi&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Reflection (khoa học máy tính) – Wikipedia tiếng Việt"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//vi.m.wikipedia.org/wiki/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)"> <link rel="alternate" type="application/x-wiki" title="Sửa đổi" href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (vi)"> <link rel="EditURI" type="application/rsd+xml" href="//vi.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://vi.wikipedia.org/wiki/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.vi"> <link rel="alternate" type="application/atom+xml" title="Nguồn cấp Atom của Wikipedia" href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Thay_%C4%91%E1%BB%95i_g%E1%BA%A7n_%C4%91%C3%A2y&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Reflection_khoa_học_máy_tính rootpage-Reflection_khoa_học_máy_tính skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Bước tới nội dung</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Trang Web"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Trình đơn chính" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Trình đơn chính</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Trình đơn chính</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">chuyển sang thanh bên</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">ẩn</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Điều hướng </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Trang_Ch%C3%ADnh" title="Xem trang chính [z]" accesskey="z"><span>Trang Chính</span></a></li><li id="n-wikipedia-featuredcontent" class="mw-list-item"><a href="/wiki/C%E1%BB%95ng_th%C3%B4ng_tin:N%E1%BB%99i_dung_ch%E1%BB%8Dn_l%E1%BB%8Dc"><span>Nội dung chọn lọc</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Ng%E1%BA%ABu_nhi%C3%AAn" title="Xem trang ngẫu nhiên [x]" accesskey="x"><span>Bài viết ngẫu nhiên</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Thay_%C4%91%E1%BB%95i_g%E1%BA%A7n_%C4%91%C3%A2y" title="Danh sách thay đổi gần đây trong wiki [r]" accesskey="r"><span>Thay đổi gần đây</span></a></li><li id="n-bug_in_article" class="mw-list-item"><a href="/wiki/Wikipedia:B%C3%A1o_l%E1%BB%97i_b%C3%A0i_vi%E1%BA%BFt"><span>Báo lỗi nội dung</span></a></li> </ul> </div> </div> <div id="p-wikipedia-interaction" class="vector-menu mw-portlet mw-portlet-wikipedia-interaction" > <div class="vector-menu-heading"> Tương tác </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-wikipedia-helppage" class="mw-list-item"><a href="/wiki/Wikipedia:S%C3%A1ch_h%C6%B0%E1%BB%9Bng_d%E1%BA%ABn"><span>Hướng dẫn</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:Gi%E1%BB%9Bi_thi%E1%BB%87u"><span>Giới thiệu Wikipedia</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:C%E1%BB%99ng_%C4%91%E1%BB%93ng" title="Giới thiệu dự án, cách sử dụng và tìm kiếm thông tin ở đây"><span>Cộng đồng</span></a></li><li id="n-wikipedia-villagepump" class="mw-list-item"><a href="/wiki/Wikipedia:Th%E1%BA%A3o_lu%E1%BA%ADn"><span>Thảo luận chung</span></a></li><li id="n-wikipedia-helpdesk" class="mw-list-item"><a href="/wiki/Wikipedia:Gi%C3%BAp_s%E1%BB%AD_d%E1%BB%A5ng_Wikipedia"><span>Giúp sử dụng</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//vi.wikipedia.org/wiki/Wikipedia:Liên_lạc"><span>Liên lạc</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:Tr%C3%ACnh_t%E1%BA%A3i_l%C3%AAn_t%E1%BA%ADp_tin"><span>Tải lên tập tin</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Trang_Ch%C3%ADnh" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="Bách khoa toàn thư mở" src="/static/images/mobile/copyright/wikipedia-tagline-vi.svg" width="120" height="10" style="width: 7.5em; height: 0.625em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:T%C3%ACm_ki%E1%BA%BFm" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Tìm kiếm Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Tìm kiếm</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Tìm kiếm trên Wikipedia" aria-label="Tìm kiếm trên Wikipedia" autocapitalize="sentences" title="Tìm kiếm Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Đặc_biệt:Tìm_kiếm"> </div> <button class="cdx-button cdx-search-input__end-button">Tìm kiếm</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Công cụ cá nhân"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Giao diện"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Giao diện" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Giao diện</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_vi.wikipedia.org&uselang=vi" class=""><span>Quyên góp</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:M%E1%BB%9F_t%C3%A0i_kho%E1%BA%A3n&returnto=Reflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29&returntoquery=section%3D21%26veaction%3Dedit%26redirect%3Dno" title="Bạn được khuyến khích mở tài khoản và đăng nhập; tuy nhiên, không bắt buộc phải có tài khoản" class=""><span>Tạo tài khoản</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C4%83ng_nh%E1%BA%ADp&returnto=Reflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29&returntoquery=section%3D21%26veaction%3Dedit%26redirect%3Dno" title="Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc. [o]" accesskey="o" class=""><span>Đăng nhập</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Thêm tùy chọn" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Công cụ cá nhân" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Công cụ cá nhân</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Bảng chọn thành viên" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_vi.wikipedia.org&uselang=vi"><span>Quyên góp</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:M%E1%BB%9F_t%C3%A0i_kho%E1%BA%A3n&returnto=Reflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29&returntoquery=section%3D21%26veaction%3Dedit%26redirect%3Dno" title="Bạn được khuyến khích mở tài khoản và đăng nhập; tuy nhiên, không bắt buộc phải có tài khoản"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Tạo tài khoản</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C4%83ng_nh%E1%BA%ADp&returnto=Reflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29&returntoquery=section%3D21%26veaction%3Dedit%26redirect%3Dno" title="Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Đăng nhập</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Trang dành cho người dùng chưa đăng nhập <a href="/wiki/Tr%E1%BB%A3_gi%C3%BAp:Gi%E1%BB%9Bi_thi%E1%BB%87u" aria-label="Tìm hiểu thêm về sửa đổi"><span>tìm hiểu thêm</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p_c%E1%BB%A7a_t%C3%B4i" title="Danh sách các sửa đổi được thực hiện qua địa chỉ IP này [y]" accesskey="y"><span>Đóng góp</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Th%E1%BA%A3o_lu%E1%BA%ADn_t%C3%B4i" title="Thảo luận với địa chỉ IP này [n]" accesskey="n"><span>Thảo luận cho địa chỉ IP này</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Trang Web"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Nội dung" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Nội dung</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">chuyển sang thanh bên</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">ẩn</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Đầu</div> </a> </li> <li id="toc-Bối_cảnh_lịch_sử" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Bối_cảnh_lịch_sử"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Bối cảnh lịch sử</span> </div> </a> <ul id="toc-Bối_cảnh_lịch_sử-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Công_dụng" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Công_dụng"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Công dụng</span> </div> </a> <ul id="toc-Công_dụng-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Thực_hiện" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Thực_hiện"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Thực hiện</span> </div> </a> <ul id="toc-Thực_hiện-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Cân_nhắc_bảo_mật" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Cân_nhắc_bảo_mật"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Cân nhắc bảo mật</span> </div> </a> <ul id="toc-Cân_nhắc_bảo_mật-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ví_dụ" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Ví_dụ"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Ví dụ</span> </div> </a> <button aria-controls="toc-Ví_dụ-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Hiện/ẩn mục Ví dụ</span> </button> <ul id="toc-Ví_dụ-sublist" class="vector-toc-list"> <li id="toc-C#" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#C#"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>C#</span> </div> </a> <ul id="toc-C#-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Delphi_/_Object_Pascal" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Delphi_/_Object_Pascal"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>Delphi / Object Pascal</span> </div> </a> <ul id="toc-Delphi_/_Object_Pascal-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-eC" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#eC"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.3</span> <span>eC</span> </div> </a> <ul id="toc-eC-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Go" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Go"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4</span> <span>Go</span> </div> </a> <ul id="toc-Go-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Java" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Java"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5</span> <span>Java</span> </div> </a> <ul id="toc-Java-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-JavaScript" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#JavaScript"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6</span> <span>JavaScript</span> </div> </a> <ul id="toc-JavaScript-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Julia" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Julia"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.7</span> <span>Julia</span> </div> </a> <ul id="toc-Julia-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Objective-C" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Objective-C"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.8</span> <span>Objective-C</span> </div> </a> <ul id="toc-Objective-C-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Perl" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Perl"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.9</span> <span>Perl</span> </div> </a> <ul id="toc-Perl-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-PHP" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#PHP"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.10</span> <span>PHP</span> </div> </a> <ul id="toc-PHP-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Python" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Python"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.11</span> <span>Python</span> </div> </a> <ul id="toc-Python-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-R" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#R"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.12</span> <span>R</span> </div> </a> <ul id="toc-R-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ruby" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Ruby"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.13</span> <span>Ruby</span> </div> </a> <ul id="toc-Ruby-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Xojo" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Xojo"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.14</span> <span>Xojo</span> </div> </a> <ul id="toc-Xojo-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Xem_thêm" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Xem_thêm"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Xem thêm</span> </div> </a> <ul id="toc-Xem_thêm-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ghi_chú_thuật_ngữ" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Ghi_chú_thuật_ngữ"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Ghi chú thuật ngữ</span> </div> </a> <ul id="toc-Ghi_chú_thuật_ngữ-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Tham_khảo" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Tham_khảo"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Tham khảo</span> </div> </a> <button aria-controls="toc-Tham_khảo-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Hiện/ẩn mục Tham khảo</span> </button> <ul id="toc-Tham_khảo-sublist" class="vector-toc-list"> <li id="toc-Trích_dẫn" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Trích_dẫn"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.1</span> <span>Trích dẫn</span> </div> </a> <ul id="toc-Trích_dẫn-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Nguồn" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Nguồn"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.2</span> <span>Nguồn</span> </div> </a> <ul id="toc-Nguồn-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Đọc_thêm" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Đọc_thêm"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Đọc thêm</span> </div> </a> <ul id="toc-Đọc_thêm-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Liên_kết_ngoài" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Liên_kết_ngoài"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Liên kết ngoài</span> </div> </a> <ul id="toc-Liên_kết_ngoài-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Nội dung" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Đóng mở mục lục" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Đóng mở mục lục</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Reflection (khoa học máy tính)</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Xem bài viết trong ngôn ngữ khác. Bài có sẵn trong 25 ngôn ngữ" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-25" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">25 ngôn ngữ</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9_%D8%A7%D9%86%D8%B9%D9%83%D8%A7%D8%B3%D9%8A%D8%A9" title="برمجة انعكاسية – Tiếng Ả Rập" lang="ar" hreflang="ar" data-title="برمجة انعكاسية" data-language-autonym="العربية" data-language-local-name="Tiếng Ả Rập" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Refleksiya" title="Refleksiya – Tiếng Azerbaijan" lang="az" hreflang="az" data-title="Refleksiya" data-language-autonym="Azərbaycanca" data-language-local-name="Tiếng Azerbaijan" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Pantulan_(pengaturcaraan_komputer)" title="Pantulan (pengaturcaraan komputer) – Tiếng Mã Lai" lang="ms" hreflang="ms" data-title="Pantulan (pengaturcaraan komputer)" data-language-autonym="Bahasa Melayu" data-language-local-name="Tiếng Mã Lai" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Reflexi%C3%B3_(inform%C3%A0tica)" title="Reflexió (informàtica) – Tiếng Catalan" lang="ca" hreflang="ca" data-title="Reflexió (informàtica)" data-language-autonym="Català" data-language-local-name="Tiếng Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Reflexe_(programov%C3%A1n%C3%AD)" title="Reflexe (programování) – Tiếng Séc" lang="cs" hreflang="cs" data-title="Reflexe (programování)" data-language-autonym="Čeština" data-language-local-name="Tiếng Séc" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Reflexion_(Programmierung)" title="Reflexion (Programmierung) – Tiếng Đức" lang="de" hreflang="de" data-title="Reflexion (Programmierung)" data-language-autonym="Deutsch" data-language-local-name="Tiếng Đức" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/%CE%91%CE%BD%CE%AC%CE%BA%CE%BB%CE%B1%CF%83%CE%B7_(%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82)" title="Ανάκλαση (υπολογιστές) – Tiếng Hy Lạp" lang="el" hreflang="el" data-title="Ανάκλαση (υπολογιστές)" data-language-autonym="Ελληνικά" data-language-local-name="Tiếng Hy Lạp" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Reflective_programming" title="Reflective programming – Tiếng Anh" lang="en" hreflang="en" data-title="Reflective programming" data-language-autonym="English" data-language-local-name="Tiếng Anh" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Reflexi%C3%B3n_(inform%C3%A1tica)" title="Reflexión (informática) – Tiếng Tây Ban Nha" lang="es" hreflang="es" data-title="Reflexión (informática)" data-language-autonym="Español" data-language-local-name="Tiếng Tây Ban Nha" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D9%BE%DA%98%D9%88%D8%A7%DA%A9%DB%8C" title="برنامهنویسی پژواکی – Tiếng Ba Tư" lang="fa" hreflang="fa" data-title="برنامهنویسی پژواکی" data-language-autonym="فارسی" data-language-local-name="Tiếng Ba Tư" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/R%C3%A9flexion_(informatique)" title="Réflexion (informatique) – Tiếng Pháp" lang="fr" hreflang="fr" data-title="Réflexion (informatique)" data-language-autonym="Français" data-language-local-name="Tiếng Pháp" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%B0%98%EC%98%81_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)" title="반영 (컴퓨터 과학) – Tiếng Hàn" lang="ko" hreflang="ko" data-title="반영 (컴퓨터 과학)" data-language-autonym="한국어" data-language-local-name="Tiếng Hàn" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Riflessione_(informatica)" title="Riflessione (informatica) – Tiếng Italy" lang="it" hreflang="it" data-title="Riflessione (informatica)" data-language-autonym="Italiano" data-language-local-name="Tiếng Italy" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/Reflection_(%D7%AA%D7%9B%D7%A0%D7%95%D7%AA)" title="Reflection (תכנות) – Tiếng Do Thái" lang="he" hreflang="he" data-title="Reflection (תכנות)" data-language-autonym="עברית" data-language-local-name="Tiếng Do Thái" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/Refleksija_(programavimas)" title="Refleksija (programavimas) – Tiếng Litva" lang="lt" hreflang="lt" data-title="Refleksija (programavimas)" data-language-autonym="Lietuvių" data-language-local-name="Tiếng Litva" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%B1%E0%B4%BF%E0%B4%AB%E0%B5%8D%E0%B4%B2%E0%B4%95%E0%B5%8D%E0%B4%9F%E0%B5%80%E0%B4%B5%E0%B5%8D_%E0%B4%AA%E0%B5%8D%E0%B4%B0%E0%B5%8B%E0%B4%97%E0%B5%8D%E0%B4%B0%E0%B4%BE%E0%B4%AE%E0%B4%BF%E0%B4%82%E0%B4%97%E0%B5%8D" title="റിഫ്ലക്ടീവ് പ്രോഗ്രാമിംഗ് – Tiếng Malayalam" lang="ml" hreflang="ml" data-title="റിഫ്ലക്ടീവ് പ്രോഗ്രാമിംഗ്" data-language-autonym="മലയാളം" data-language-local-name="Tiếng Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Reflectie_(informatica)" title="Reflectie (informatica) – Tiếng Hà Lan" lang="nl" hreflang="nl" data-title="Reflectie (informatica)" data-language-autonym="Nederlands" data-language-local-name="Tiếng Hà Lan" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3_(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6)" title="リフレクション (情報工学) – Tiếng Nhật" lang="ja" hreflang="ja" data-title="リフレクション (情報工学)" data-language-autonym="日本語" data-language-local-name="Tiếng Nhật" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Mechanizm_refleksji" title="Mechanizm refleksji – Tiếng Ba Lan" lang="pl" hreflang="pl" data-title="Mechanizm refleksji" data-language-autonym="Polski" data-language-local-name="Tiếng Ba Lan" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Reflex%C3%A3o_(programa%C3%A7%C3%A3o)" title="Reflexão (programação) – Tiếng Bồ Đào Nha" lang="pt" hreflang="pt" data-title="Reflexão (programação)" data-language-autonym="Português" data-language-local-name="Tiếng Bồ Đào Nha" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Рефлексия (программирование) – Tiếng Nga" lang="ru" hreflang="ru" data-title="Рефлексия (программирование)" data-language-autonym="Русский" data-language-local-name="Tiếng Nga" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/Refleksija_(ra%C4%8Dunalni%C5%A1tvo)" title="Refleksija (računalništvo) – Tiếng Slovenia" lang="sl" hreflang="sl" data-title="Refleksija (računalništvo)" data-language-autonym="Slovenščina" data-language-local-name="Tiếng Slovenia" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D1%98%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D1%9A%D0%B5)" title="Рефлексија (програмирање) – Tiếng Serbia" lang="sr" hreflang="sr" data-title="Рефлексија (програмирање)" data-language-autonym="Српски / srpski" data-language-local-name="Tiếng Serbia" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%BB%D0%B5%D0%BA%D1%81%D1%96%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" title="Рефлексія (програмування) – Tiếng Ukraina" lang="uk" hreflang="uk" data-title="Рефлексія (програмування)" data-language-autonym="Українська" data-language-local-name="Tiếng Ukraina" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E5%8F%8D%E5%B0%84%E5%BC%8F%E7%BC%96%E7%A8%8B" title="反射式编程 – Tiếng Trung" lang="zh" hreflang="zh" data-title="反射式编程" data-language-autonym="中文" data-language-local-name="Tiếng Trung" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1056451#sitelinks-wikipedia" title="Sửa liên kết giữa ngôn ngữ" class="wbc-editpage">Sửa liên kết</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Không gian tên"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)" title="Xem bài viết [c]" accesskey="c"><span>Bài viết</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn:Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)" rel="discussion" title="Thảo luận về trang này [t]" accesskey="t"><span>Thảo luận</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Thay đổi biến thể ngôn ngữ" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tiếng Việt</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Giao diện"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)"><span>Đọc</span></a></li><li id="ca-ve-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit" title="Sửa đổi trang này [v]" accesskey="v"><span>Sửa đổi</span></a></li><li id="ca-edit" class="collapsible vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit" title="Sửa đổi mã nguồn của trang này [e]" accesskey="e"><span>Sửa mã nguồn</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=history" title="Các phiên bản cũ của trang này [h]" accesskey="h"><span>Xem lịch sử</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Công cụ trang"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Công cụ" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Công cụ</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Công cụ</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">chuyển sang thanh bên</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">ẩn</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Thêm tùy chọn" > <div class="vector-menu-heading"> Tác vụ </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)"><span>Đọc</span></a></li><li id="ca-more-ve-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit" title="Sửa đổi trang này [v]" accesskey="v"><span>Sửa đổi</span></a></li><li id="ca-more-edit" class="collapsible vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit" title="Sửa đổi mã nguồn của trang này [e]" accesskey="e"><span>Sửa mã nguồn</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=history"><span>Xem lịch sử</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Chung </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)" title="Các trang liên kết đến đây [j]" accesskey="j"><span>Các liên kết đến đây</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Thay_%C4%91%E1%BB%95i_li%C3%AAn_quan/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)" rel="nofollow" title="Thay đổi gần đây của các trang liên kết đến đây [k]" accesskey="k"><span>Thay đổi liên quan</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_%C4%91%E1%BA%B7c_bi%E1%BB%87t" title="Một danh sách chứa tất cả trang đặc biệt [q]" accesskey="q"><span>Trang đặc biệt</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&oldid=69425319" title="Liên kết thường trực đến phiên bản này của trang"><span>Liên kết thường trực</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=info" title="Thêm chi tiết về trang này"><span>Thông tin trang</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Tr%C3%ADch_d%E1%BA%ABn&page=Reflection_%28khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh%29&id=69425319&wpFormIdentifier=titleform" title="Hướng dẫn cách trích dẫn trang này"><span>Trích dẫn trang này</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:UrlShortener&url=https%3A%2F%2Fvi.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DReflection_%28khoa_h%25E1%25BB%258Dc_m%25C3%25A1y_t%25C3%25ADnh%29%26section%3D21%26veaction%3Dedit"><span>Lấy URL ngắn gọn</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:QrCode&url=https%3A%2F%2Fvi.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DReflection_%28khoa_h%25E1%25BB%258Dc_m%25C3%25A1y_t%25C3%25ADnh%29%26section%3D21%26veaction%3Dedit"><span>Tải mã QR</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> In và xuất </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:S%C3%A1ch&bookcmd=book_creator&referer=Reflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29"><span>Tạo một quyển sách</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:DownloadAsPdf&page=Reflection_%28khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh%29&action=show-download-screen"><span>Tải dưới dạng PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&printable=yes" title="Bản để in ra của trang [p]" accesskey="p"><span>Bản để in ra</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> Tại dự án khác </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1056451" title="Liên kết đến khoản mục kết nối trong kho dữ liệu [g]" accesskey="g"><span>Khoản mục Wikidata</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Công cụ trang"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Giao diện"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Giao diện</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">chuyển sang thanh bên</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">ẩn</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">Bách khoa toàn thư mở Wikipedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="vi" dir="ltr"><p>Trong <a href="/wiki/Khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh" title="Khoa học máy tính">khoa học máy tính</a>, <b>reflection</b> (có thể dịch là "phản tỉnh", "tự xét mình") là việc <a href="/wiki/Ti%E1%BA%BFn_tr%C3%ACnh_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)" title="Tiến trình (khoa học máy tính)">tiến trình</a> có khả năng xem xét, <a href="/w/index.php?title=N%E1%BB%99i_quan_ki%E1%BB%83u_d%E1%BB%AF_li%E1%BB%87u&action=edit&redlink=1" class="new" title="Nội quan kiểu dữ liệu (trang không tồn tại)">nội quan</a>,<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>a<span class="cite-bracket">]</span></a></sup> và sửa đổi kết cấu cùng với hành trạng của chính nó.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Bối_cảnh_lịch_sử"><span id="B.E1.BB.91i_c.E1.BA.A3nh_l.E1.BB.8Bch_s.E1.BB.AD"></span>Bối cảnh lịch sử</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=1" title="Sửa đổi phần “Bối cảnh lịch sử”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=1" title="Sửa mã nguồn tại đề mục: Bối cảnh lịch sử"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Các máy tính ban sơ nhất đều được lập trình bằng ngôn ngữ bản địa là <a href="/wiki/H%E1%BB%A3p_ng%E1%BB%AF" title="Hợp ngữ">hợp ngữ</a>, vốn đã có tính reflection, vì ta có thể lập trình trên những kiến trúc gốc này theo cách là định nghĩa lệnh chỉ thị<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>b<span class="cite-bracket">]</span></a></sup> như dữ liệu và viết <a href="/w/index.php?title=M%C3%A3_t%E1%BB%B1_s%E1%BB%ADa_%C4%91%E1%BB%95i&action=edit&redlink=1" class="new" title="Mã tự sửa đổi (trang không tồn tại)">code tự sửa được chính nó</a>. Khi việc lập trình phần đông đều chuyển sang những <a href="/wiki/Ng%C3%B4n_ng%E1%BB%AF_bi%C3%AAn_d%E1%BB%8Bch" title="Ngôn ngữ biên dịch">ngôn ngữ biên dịch</a> cấp cao hơn như <a href="/wiki/ALGOL" title="ALGOL">Algol</a>, <a href="/wiki/COBOL" title="COBOL">Cobol</a>, <a href="/wiki/Fortran" title="Fortran">Fortran</a>, <a href="/wiki/Pascal_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Pascal (ngôn ngữ lập trình)">Pascal</a>, và <a href="/wiki/C_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="C (ngôn ngữ lập trình)">C</a>, thì khả năng reflection này phần lớn biến mất, mãi đến thời những ngôn ngữ lập trình mới hơn thì tính năng reflection có sẵn vào <a href="/wiki/H%E1%BB%87_th%E1%BB%91ng_ki%E1%BB%83u" title="Hệ thống kiểu">hệ thống kiểu</a> dữ liệu mới xuất hiện lại.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Ch%C3%BA_th%C3%ADch_ngu%E1%BB%93n_g%E1%BB%91c" title="Wikipedia:Chú thích nguồn gốc"><span title="Tuyên bố này cần tham khảo đến các nguồn đáng tin cậy. (July 2015)">cần dẫn nguồn</span></a></i>]</sup> </p><p>Luận án tiến sĩ năm 1982 của <a href="/w/index.php?title=Brian_Cantwell_Smith&action=edit&redlink=1" class="new" title="Brian Cantwell Smith (trang không tồn tại)">Brian Cantwell Smith</a> đã giới thiệu khái niệm computational reflection trong <a href="/wiki/Ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh" title="Ngôn ngữ lập trình">ngôn ngữ lập trình</a> thủ tục và khái niệm về <a href="/w/index.php?title=Meta-circular_interpreter&action=edit&redlink=1" class="new" title="Meta-circular interpreter (trang không tồn tại)">meta-circular interpreter</a> làm thành phần trong <a href="/w/index.php?title=3-Lisp&action=edit&redlink=1" class="new" title="3-Lisp (trang không tồn tại)">3-Lisp</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Công_dụng"><span id="C.C3.B4ng_d.E1.BB.A5ng"></span>Công dụng</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=2" title="Sửa đổi phần “Công dụng”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=2" title="Sửa mã nguồn tại đề mục: Công dụng"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Reflection giúp <a href="/wiki/L%E1%BA%ADp_tr%C3%ACnh_vi%C3%AAn" title="Lập trình viên">lập trình viên</a> làm nên các thư viện phần mềm tổng loại để hiển thị dữ liệu, xử lý các định dạng dữ liệu khác nhau, thi hành <a href="/w/index.php?title=Tu%E1%BA%A7n_t%E1%BB%B1_h%C3%B3a&action=edit&redlink=1" class="new" title="Tuần tự hóa (trang không tồn tại)">tuần tự hóa</a> hay khử tuần tự dữ liệu cho việc liên lạc, hoặc làm việc bọc<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>c<span class="cite-bracket">]</span></a></sup> và mở bọc dữ liệu cho các container hoặc các burst trong quá trình liên lạc. </p><p>Để sử dụng reflection cho hiệu quả thì hầu như luôn luôn cần có kế hoạch nào đó: framework thiết kế, bản mô tả encoding, thư viện đối tượng, bản đồ cơ sở dữ liệu hoặc quan hệ thực thể. </p><p>Reflection làm cho ngôn ngữ hợp với mã hướng mạng hơn. Ví dụ, reflection trợ giúp các ngôn ngữ như <a href="/wiki/Java_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Java (ngôn ngữ lập trình)">Java</a> thao tác tốt hơn trong hệ thống mạng bằng cách tạo điều kiện cho các thư viện cho việc tuần tự hóa, bọc gói và biến thiên các định dạng dữ liệu. Các ngôn ngữ không có reflection như <a href="/wiki/C_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="C (ngôn ngữ lập trình)">C</a> thì cần phải sử dụng <a href="/wiki/Tr%C3%ACnh_bi%C3%AAn_d%E1%BB%8Bch" title="Trình biên dịch">trình biên dịch</a> phụ trợ cho tác vụ, như <a href="/w/index.php?title=ASN.1&action=edit&redlink=1" class="new" title="ASN.1 (trang không tồn tại)">Abstract Syntax Notation</a>, thì mới tạo được mã cho việc tuần tự hóa và bọc gói. </p><p>Reflection có thể được dùng để quan sát và sửa đổi việc thực thi chương trình tại <a href="/w/index.php?title=Runtime_(giai_%C4%91o%E1%BA%A1n_v%C3%B2ng_%C4%91%E1%BB%9Di_ch%C6%B0%C6%A1ng_tr%C3%ACnh)&action=edit&redlink=1" class="new" title="Runtime (giai đoạn vòng đời chương trình) (trang không tồn tại)">runtime</a>. Thành phần trong chương trình hướng reflection có thể giám sát sự thực thi của vùng code và có thể sửa đổi chính nó tùy theo mục tiêu mong muốn của vùng code đó. Điều này thường đạt được bằng cách gán mã chương trình một cách động ngay tại runtime. </p><p>Trong các ngôn ngữ <a href="/wiki/L%E1%BA%ADp_tr%C3%ACnh_h%C6%B0%E1%BB%9Bng_%C4%91%E1%BB%91i_t%C6%B0%E1%BB%A3ng" title="Lập trình hướng đối tượng">lập trình hướng đối tượng</a> như <a href="/wiki/Java_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Java (ngôn ngữ lập trình)">Java</a>, reflection cho phép <i>tra duyệt</i><sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>d<span class="cite-bracket">]</span></a></sup> lớp, giao diện, trường và phương thức trong runtime mà không cần biết tên của lớp, giao diện, trường, phương thức đấy tại <a href="/w/index.php?title=Compile_time&action=edit&redlink=1" class="new" title="Compile time (trang không tồn tại)">compile time</a>. Nó cũng cho phép <i>instantiate</i> đối tượng mới và <i>invoke</i> phương thức. </p><p>Reflection thường hay được dùng trong <a href="/wiki/Ki%E1%BB%83m_th%E1%BB%AD_ph%E1%BA%A7n_m%E1%BB%81m" class="mw-redirect" title="Kiểm thử phần mềm">kiểm thử phần mềm</a>, chẳng hạn như để tạo/instantiate <a href="/w/index.php?title=Mock_object&action=edit&redlink=1" class="new" title="Mock object (trang không tồn tại)">mock object</a> trong runtime. </p><p>Reflection cũng là sách lược then chốt cho <a href="/wiki/L%E1%BA%ADp_tr%C3%ACnh_meta" title="Lập trình meta">lập trình meta</a>. </p><p>Trong một số ngôn ngữ lập trình hướng đối tượng như <a href="/wiki/C_Sharp_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="C Sharp (ngôn ngữ lập trình)">C#</a> và <a href="/wiki/Java_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Java (ngôn ngữ lập trình)">Java</a>, reflection có thể được dùng để lách khỏi các luật về <a href="/wiki/L%E1%BB%9Bp_(l%E1%BA%ADp_tr%C3%ACnh_m%C3%A1y_t%C3%ADnh)#Khả_năng_truy_cập_thành_viên" title="Lớp (lập trình máy tính)">tính khả cập thành viên</a>. Với property của C#, điều này có thể đạt được bằng cách ghi trực tiếp lên trường chống lưng<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>e<span class="cite-bracket">]</span></a></sup> (thường là bị ẩn) của property non-public. Cũng có thể truy xuất phương thức non-public của lớp và kiểu rồi sau đó invoke nó bằng tay. Điều này dùng được cho file nội bộ dự án cùng với những thư viện bên ngoài như assembly của <a href="/wiki/.NET_Framework" title=".NET Framework">.NET</a> và archive của Java. </p> <div class="mw-heading mw-heading2"><h2 id="Thực_hiện"><span id="Th.E1.BB.B1c_hi.E1.BB.87n"></span>Thực hiện</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=3" title="Sửa đổi phần “Thực hiện”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=3" title="Sửa mã nguồn tại đề mục: Thực hiện"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ngôn ngữ mà hỗ trợ reflection thì mang lại một số lượng tính năng khả dụng ở runtime, khó mà làm được những tính năng đó nếu dùng ngôn ngữ cấp thấp hơn. Một số tính năng này là: </p> <ul><li>Khám phá và sửa đổi cấu trúc <a href="/wiki/M%C3%A3_ngu%E1%BB%93n" title="Mã nguồn">mã nguồn</a> (chẳng hạn như khối mã, <a href="/wiki/L%E1%BB%9Bp_(l%E1%BA%ADp_tr%C3%ACnh_m%C3%A1y_t%C3%ADnh)" title="Lớp (lập trình máy tính)">lớp</a>, phương thức, giao thức, v.v.) như <a href="/w/index.php?title=C%C3%B4ng_d%C3%A2n_h%E1%BA%A1ng_nh%E1%BA%A5t_(l%E1%BA%ADp_tr%C3%ACnh)&action=edit&redlink=1" class="new" title="Công dân hạng nhất (lập trình) (trang không tồn tại)">đối tượng hạng nhất</a> tại <a href="/w/index.php?title=Runtime_(giai_%C4%91o%E1%BA%A1n_v%C3%B2ng_%C4%91%E1%BB%9Di_ch%C6%B0%C6%A1ng_tr%C3%ACnh)&action=edit&redlink=1" class="new" title="Runtime (giai đoạn vòng đời chương trình) (trang không tồn tại)">runtime</a>.</li> <li>Từ <a href="/w/index.php?title=Chu%E1%BB%97i_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&redlink=1" class="new" title="Chuỗi (khoa học máy tính) (trang không tồn tại)">chuỗi</a> khớp với tên symbol của lớp hoặc hàm, đổi sang tham chiếu hoặc invocation tới lớp hoặc hàm đó.</li> <li>Tính giá trị chuỗi như thể nó là mã lệnh trong runtime.</li> <li>Tạo ra <a href="/wiki/Tr%C3%ACnh_th%C3%B4ng_d%E1%BB%8Bch" title="Trình thông dịch">trình thông dịch</a> mới cho <a href="/wiki/Bytecode" title="Bytecode">bytecode</a> của ngôn ngữ để mang lại ý nghĩa hoặc mục đích mới cho cấu trúc lập trình nào đó.</li></ul> <p>Các tính năng này có thể được thực hiện theo nhiều cách khác nhau. Trong <a href="/w/index.php?title=MOO&action=edit&redlink=1" class="new" title="MOO (trang không tồn tại)">MOO</a>, reflection là một phần tự nhiên của quán ngữ lập trình<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>f<span class="cite-bracket">]</span></a></sup> thường dụng. Khi động từ (phương thức) được gọi, các biến khác nhau như <i>verb</i> (tên của động từ được gọi) và <i>this</i> (đối tượng mà trên đó động từ được gọi) sẽ tự động được điền vào làm ngữ cảnh cho lệnh gọi đấy. Về bảo mật thì thường được quản lý bằng cách dùng lập trình để truy cập <a href="/w/index.php?title=Call_stack&action=edit&redlink=1" class="new" title="Call stack (trang không tồn tại)">call stack</a>: gọi vào hàm <i>callers()</i> sẽ trả về danh sách các phương thức theo thứ tự gọi dần về động từ hiện hành, nên kiểm tra <i>callers()[0]</i> (tức lệnh do người dùng gốc invoke) cho phép động từ bảo vệ chính mình khỏi việc sử dụng trái phép.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p><p>Ngôn ngữ biên dịch thì dựa vào hệ thống runtime để cung cấp thông tin về mã nguồn. Ví dụ: file thực thi được biên dịch từ <a href="/wiki/Objective-C" title="Objective-C">Objective-C</a> thì nó ghi lại tên của tất cả phương thức ở một khối trong file thực thi đó và dành ra một bảng để sắp các tên đó với các phương thức tương ứng (hoặc selector cho các phương thức tương ứng) trong chương trình. Còn ở ngôn ngữ biên dịch mà có hỗ trợ tạo ra hàm ngay ở runtime, chẳng hạn <a href="/w/index.php?title=Common_Lisp&action=edit&redlink=1" class="new" title="Common Lisp (trang không tồn tại)">Common Lisp</a>, thì môi trường runtime phải có kèm cả trình biên dịch hoặc trình thông dịch. </p><p>Reflection có thể được thực hiện cho các ngôn ngữ không có sẵn reflection bằng cách sử dụng hệ <a href="/w/index.php?title=Ph%C3%A9p_bi%E1%BA%BFn_%C4%91%E1%BB%95i_ch%C6%B0%C6%A1ng_tr%C3%ACnh&action=edit&redlink=1" class="new" title="Phép biến đổi chương trình (trang không tồn tại)">biến đổi chương trình</a> để vạch ra đường lối biến đổi tự động cho mã nguồn. </p> <div class="mw-heading mw-heading2"><h2 id="Cân_nhắc_bảo_mật"><span id="C.C3.A2n_nh.E1.BA.AFc_b.E1.BA.A3o_m.E1.BA.ADt"></span>Cân nhắc bảo mật</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=4" title="Sửa đổi phần “Cân nhắc bảo mật”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=4" title="Sửa mã nguồn tại đề mục: Cân nhắc bảo mật"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Reflection có thể cho phép người dùng tạo ra <a href="/wiki/Lu%E1%BB%93ng_%C4%91i%E1%BB%81u_khi%E1%BB%83n" title="Luồng điều khiển">dòng điều khiển</a> không ngờ được xuyên qua ứng dụng và có thể lách khỏi các biện pháp bảo mật. Điều này có thể bị những kẻ tấn công khai thác.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Các <a href="/w/index.php?title=L%E1%BB%97_h%E1%BB%95ng_(%C4%91i%E1%BB%87n_to%C3%A1n)&action=edit&redlink=1" class="new" title="Lỗ hổng (điện toán) (trang không tồn tại)">lỗ hổng</a> trong lịch sử ở Java do 'reflection không an toàn' gây ra có thể tạo điều kiện cho code truy xuất đến máy bất khả tín ở xa, từ đó thoát khỏi cơ chế bảo mật <a href="/w/index.php?title=H%E1%BB%99p_c%C3%A1t_(b%E1%BA%A3o_m%E1%BA%ADt_m%C3%A1y_t%C3%ADnh)&action=edit&redlink=1" class="new" title="Hộp cát (bảo mật máy tính) (trang không tồn tại)">sandbox</a> của Java. Một nghiên cứu quy mô lớn về 120 lỗ hổng Java vào năm 2013 đã kết luận rằng 'reflection không an toàn' là lỗ hổng phổ biến nhất trong Java, mặc dù không phải là cái bị khai thác nhiều nhất.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Ví_dụ"><span id="V.C3.AD_d.E1.BB.A5"></span>Ví dụ</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=5" title="Sửa đổi phần “Ví dụ”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=5" title="Sửa mã nguồn tại đề mục: Ví dụ"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Các đoạn mã sau đây đều tạo ra một <a href="/wiki/Th%E1%BB%B1c_th%E1%BB%83_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)" title="Thực thể (khoa học máy tính)">instance</a> <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" id="" style="" dir="ltr">foo</code> của <a href="/wiki/L%E1%BB%9Bp_(l%E1%BA%ADp_tr%C3%ACnh_m%C3%A1y_t%C3%ADnh)" title="Lớp (lập trình máy tính)">lớp</a> <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" id="" style="" dir="ltr">Foo</code> rồi gọi <a href="/wiki/Ph%C6%B0%C6%A1ng_th%E1%BB%A9c_(l%E1%BA%ADp_tr%C3%ACnh_m%C3%A1y_t%C3%ADnh)" title="Phương thức (lập trình máy tính)">phương thức</a> <code class="mw-highlight mw-highlight-lang-text mw-content-ltr" id="" style="" dir="ltr">PrintHello</code> của nó. Với mỗi <a href="/wiki/Ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh" title="Ngôn ngữ lập trình">ngôn ngữ lập trình</a>, trình tự lệnh để gọi bình thường và trình tự lệnh để gọi dựa trên reflection đều được thể hiện. </p> <div class="mw-heading mw-heading3"><h3 id="C#"><span id="C.23"></span>C#</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=6" title="Sửa đổi phần “C#”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=6" title="Sửa mã nguồn tại đề mục: C#"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/C_Sharp_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="C Sharp (ngôn ngữ lập trình)">C#</a>:</p><div class="mw-highlight mw-highlight-lang-c# mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Không dùng reflection</span> <span class="n">Foo</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Foo</span><span class="p">();</span> <span class="n">foo</span><span class="p">.</span><span class="n">PrintHello</span><span class="p">();</span> <span class="c1">// Dùng reflection</span> <span class="n">Object</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Activator</span><span class="p">.</span><span class="n">CreateInstance</span><span class="p">(</span><span class="s">"complete.classpath.and.Foo"</span><span class="p">);</span> <span class="n">MethodInfo</span><span class="w"> </span><span class="n">method</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">foo</span><span class="p">.</span><span class="n">GetType</span><span class="p">().</span><span class="n">GetMethod</span><span class="p">(</span><span class="s">"PrintHello"</span><span class="p">);</span> <span class="n">method</span><span class="p">.</span><span class="n">Invoke</span><span class="p">(</span><span class="n">foo</span><span class="p">,</span><span class="w"> </span><span class="k">null</span><span class="p">);</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Delphi_/_Object_Pascal"><span id="Delphi_.2F_Object_Pascal"></span>Delphi / Object Pascal</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=7" title="Sửa đổi phần “Delphi / Object Pascal”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=7" title="Sửa mã nguồn tại đề mục: Delphi / Object Pascal"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Ví dụ <a href="/wiki/Delphi_(ph%E1%BA%A7n_m%E1%BB%81m)" title="Delphi (phần mềm)">Delphi</a> / <a href="/wiki/Object_Pascal" title="Object Pascal">Object Pascal</a> sau đây giả định rằng có một lớp <style data-mw-deduplicate="TemplateStyles:r68144455">.mw-parser-output .monospaced{font-family:monospace,monospace}</style><span class="monospaced">TFoo</span> đã được khai báo trong một đơn vị được gọi là <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r68144455"><span class="monospaced">Unit1</span>:</p><div class="mw-highlight mw-highlight-lang-delphi mw-content-ltr" dir="ltr"><pre><span></span><span class="k">uses</span><span class="w"> </span><span class="n">RTTI</span><span class="o">,</span><span class="w"> </span><span class="n">Unit1</span><span class="o">;</span> <span class="c1">// Không dùng reflection</span> <span class="k">procedure</span><span class="w"> </span><span class="nf">WithoutReflection</span><span class="o">;</span> <span class="k">var</span> <span class="w"> </span><span class="n">Foo</span><span class="o">:</span><span class="w"> </span><span class="n">TFoo</span><span class="o">;</span> <span class="k">begin</span> <span class="w"> </span><span class="n">Foo</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="n">TFoo</span><span class="o">.</span><span class="n">Create</span><span class="o">;</span> <span class="w"> </span><span class="k">try</span> <span class="w"> </span><span class="n">Foo</span><span class="o">.</span><span class="n">Hello</span><span class="o">;</span> <span class="w"> </span><span class="k">finally</span> <span class="w"> </span><span class="n">Foo</span><span class="o">.</span><span class="n">Free</span><span class="o">;</span> <span class="w"> </span><span class="k">end</span><span class="o">;</span> <span class="k">end</span><span class="o">;</span> <span class="c1">// Dùng reflection</span> <span class="k">procedure</span><span class="w"> </span><span class="nf">WithReflection</span><span class="o">;</span> <span class="k">var</span> <span class="w"> </span><span class="n">RttiContext</span><span class="o">:</span><span class="w"> </span><span class="n">TRttiContext</span><span class="o">;</span> <span class="w"> </span><span class="n">RttiType</span><span class="o">:</span><span class="w"> </span><span class="n">TRttiInstanceType</span><span class="o">;</span> <span class="w"> </span><span class="n">Foo</span><span class="o">:</span><span class="w"> </span><span class="kt">TObject</span><span class="o">;</span> <span class="k">begin</span> <span class="w"> </span><span class="n">RttiType</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="n">RttiContext</span><span class="o">.</span><span class="n">FindType</span><span class="p">(</span><span class="s">'Unit1.TFoo'</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">TRttiInstanceType</span><span class="o">;</span> <span class="w"> </span><span class="n">Foo</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="n">RttiType</span><span class="o">.</span><span class="n">GetMethod</span><span class="p">(</span><span class="s">'Create'</span><span class="p">)</span><span class="o">.</span><span class="n">Invoke</span><span class="p">(</span><span class="n">RttiType</span><span class="o">.</span><span class="n">MetaclassType</span><span class="o">,</span><span class="w"> </span><span class="p">[])</span><span class="o">.</span><span class="n">AsObject</span><span class="o">;</span> <span class="w"> </span><span class="k">try</span> <span class="w"> </span><span class="n">RttiType</span><span class="o">.</span><span class="n">GetMethod</span><span class="p">(</span><span class="s">'Hello'</span><span class="p">)</span><span class="o">.</span><span class="n">Invoke</span><span class="p">(</span><span class="n">Foo</span><span class="o">,</span><span class="w"> </span><span class="p">[])</span><span class="o">;</span> <span class="w"> </span><span class="k">finally</span> <span class="w"> </span><span class="n">Foo</span><span class="o">.</span><span class="n">Free</span><span class="o">;</span> <span class="w"> </span><span class="k">end</span><span class="o">;</span> <span class="k">end</span><span class="o">;</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="eC">eC</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=8" title="Sửa đổi phần “eC”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=8" title="Sửa mã nguồn tại đề mục: eC"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/w/index.php?title=EC_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)&action=edit&redlink=1" class="new" title="EC (ngôn ngữ lập trình) (trang không tồn tại)">eC</a>:</p><div class="mw-highlight mw-highlight-lang-ec mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Không dùng reflection</span> <span class="n">Foo</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">};</span> <span class="n">foo</span><span class="p">.</span><span class="n">hello</span><span class="p">();</span> <span class="c1">// Dùng reflection</span> <span class="n">Class</span><span class="w"> </span><span class="n">fooClass</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">eSystem_FindClass</span><span class="p">(</span><span class="n">__thisModule</span><span class="p">,</span><span class="w"> </span><span class="s">"Foo"</span><span class="p">);</span> <span class="n">Instance</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">eInstance_New</span><span class="p">(</span><span class="n">fooClass</span><span class="p">);</span> <span class="n">Method</span><span class="w"> </span><span class="n">m</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">eClass_FindMethod</span><span class="p">(</span><span class="n">fooClass</span><span class="p">,</span><span class="w"> </span><span class="s">"hello"</span><span class="p">,</span><span class="w"> </span><span class="n">fooClass</span><span class="p">.</span><span class="n">module</span><span class="p">);</span> <span class="p">((</span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="p">)())(</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">m</span><span class="p">.</span><span class="n">function</span><span class="p">)(</span><span class="n">foo</span><span class="p">);</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Go">Go</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=9" title="Sửa đổi phần “Go”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=9" title="Sửa mã nguồn tại đề mục: Go"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/Go_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Go (ngôn ngữ lập trình)">Go</a>:</p><div class="mw-highlight mw-highlight-lang-go mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="s">"reflect"</span> <span class="c1">// Không dùng reflection</span> <span class="nx">f</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">Foo</span><span class="p">{}</span> <span class="nx">f</span><span class="p">.</span><span class="nx">Hello</span><span class="p">()</span> <span class="c1">// Dùng reflection</span> <span class="nx">fT</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">reflect</span><span class="p">.</span><span class="nx">TypeOf</span><span class="p">(</span><span class="nx">Foo</span><span class="p">{})</span> <span class="nx">fV</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">reflect</span><span class="p">.</span><span class="nx">New</span><span class="p">(</span><span class="nx">fT</span><span class="p">)</span> <span class="nx">m</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">fV</span><span class="p">.</span><span class="nx">MethodByName</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">)</span> <span class="k">if</span><span class="w"> </span><span class="nx">m</span><span class="p">.</span><span class="nx">IsValid</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nx">m</span><span class="p">.</span><span class="nx">Call</span><span class="p">(</span><span class="kc">nil</span><span class="p">)</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Java">Java</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=10" title="Sửa đổi phần “Java”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=10" title="Sửa mã nguồn tại đề mục: Java"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/Java_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Java (ngôn ngữ lập trình)">Java</a>:</p><div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.lang.reflect.Method</span><span class="p">;</span> <span class="c1">// Không dùng reflection</span> <span class="n">Foo</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Foo</span><span class="p">();</span> <span class="n">foo</span><span class="p">.</span><span class="na">hello</span><span class="p">();</span> <span class="c1">// Dùng reflection</span> <span class="k">try</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Object</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Foo</span><span class="p">.</span><span class="na">class</span><span class="p">.</span><span class="na">getDeclaredConstructor</span><span class="p">().</span><span class="na">newInstance</span><span class="p">();</span> <span class="w"> </span><span class="n">Method</span><span class="w"> </span><span class="n">m</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">foo</span><span class="p">.</span><span class="na">getClass</span><span class="p">().</span><span class="na">getDeclaredMethod</span><span class="p">(</span><span class="s">"hello"</span><span class="p">,</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Class</span><span class="o"><?>[</span><span class="mi">0</span><span class="o">]</span><span class="p">);</span> <span class="w"> </span><span class="n">m</span><span class="p">.</span><span class="na">invoke</span><span class="p">(</span><span class="n">foo</span><span class="p">);</span> <span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">ReflectiveOperationException</span><span class="w"> </span><span class="n">ignored</span><span class="p">)</span><span class="w"> </span><span class="p">{}</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="JavaScript">JavaScript</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=11" title="Sửa đổi phần “JavaScript”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=11" title="Sửa mã nguồn tại đề mục: JavaScript"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/JavaScript" title="JavaScript">Javascript</a>:</p><div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Không dùng reflection</span> <span class="kd">const</span><span class="w"> </span><span class="nx">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">Foo</span><span class="p">()</span> <span class="nx">foo</span><span class="p">.</span><span class="nx">hello</span><span class="p">()</span> <span class="c1">// Dùng reflection</span> <span class="kd">const</span><span class="w"> </span><span class="nx">foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Reflect</span><span class="p">.</span><span class="nx">construct</span><span class="p">(</span><span class="nx">Foo</span><span class="p">)</span> <span class="kd">const</span><span class="w"> </span><span class="nx">hello</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Reflect</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">foo</span><span class="p">,</span><span class="w"> </span><span class="s1">'hello'</span><span class="p">)</span> <span class="nb">Reflect</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="nx">hello</span><span class="p">,</span><span class="w"> </span><span class="nx">foo</span><span class="p">,</span><span class="w"> </span><span class="p">[])</span> <span class="c1">// Dùng eval</span> <span class="nb">eval</span><span class="p">(</span><span class="s1">'new Foo().hello()'</span><span class="p">)</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Julia">Julia</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=12" title="Sửa đổi phần “Julia”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=12" title="Sửa mã nguồn tại đề mục: Julia"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/w/index.php?title=Julia_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)&action=edit&redlink=1" class="new" title="Julia (ngôn ngữ lập trình) (trang không tồn tại)">Julia</a>:</p><div class="mw-highlight mw-highlight-lang-julia-repl mw-content-ltr" dir="ltr"><pre><span></span><span class="gp">julia></span><span class="w"> </span><span class="k">struct</span> <span class="kt">Point</span> <span class="w"> </span><span class="n">x</span><span class="o">::</span><span class="kt">Int</span> <span class="w"> </span><span class="n">y</span> <span class="w"> </span><span class="k">end</span> <span class="go"># Tra duyệt bằng reflection</span> <span class="gp">julia></span><span class="w"> </span><span class="n">fieldnames</span><span class="p">(</span><span class="n">Point</span><span class="p">)</span> <span class="go">(:x, :y)</span> <span class="gp">julia></span><span class="w"> </span><span class="n">fieldtypes</span><span class="p">(</span><span class="n">Point</span><span class="p">)</span> <span class="go">(Int64, Any)</span> <span class="gp">julia></span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Point</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span> <span class="go"># Truy cập bằng reflection</span> <span class="gp">julia></span><span class="w"> </span><span class="n">getfield</span><span class="p">(</span><span class="n">p</span><span class="p">,</span><span class="w"> </span><span class="ss">:x</span><span class="p">)</span> <span class="go">3</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Objective-C">Objective-C</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=13" title="Sửa đổi phần “Objective-C”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=13" title="Sửa mã nguồn tại đề mục: Objective-C"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/Objective-C" title="Objective-C">Objective-C</a>, ngầm định rằng code đang sử dụng framework <a href="/w/index.php?title=OpenStep&action=edit&redlink=1" class="new" title="OpenStep (trang không tồn tại)">OpenStep</a> hoặc <a href="/w/index.php?title=Foundation_Kit&action=edit&redlink=1" class="new" title="Foundation Kit (trang không tồn tại)">Foundation Kit</a>:</p><div class="mw-highlight mw-highlight-lang-objc mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// lớp Foo.</span> <span class="k">@interface</span> <span class="nc">Foo</span> : <span class="bp">NSObject</span> <span class="p">-</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="nf">hello</span><span class="p">;</span> <span class="k">@end</span> <span class="c1">// Gửi "hello" tới instance Foo, không dùng reflection.</span> <span class="n">Foo</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[[</span><span class="n">Foo</span><span class="w"> </span><span class="n">alloc</span><span class="p">]</span><span class="w"> </span><span class="n">init</span><span class="p">];</span> <span class="p">[</span><span class="n">obj</span><span class="w"> </span><span class="n">hello</span><span class="p">];</span> <span class="c1">// Gửi "hello" tới instance Foo, có dùng reflection.</span> <span class="kt">id</span><span class="w"> </span><span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[[</span><span class="n">NSClassFromString</span><span class="p">(</span><span class="s">@"Foo"</span><span class="p">)</span><span class="w"> </span><span class="n">alloc</span><span class="p">]</span><span class="w"> </span><span class="n">init</span><span class="p">];</span> <span class="p">[</span><span class="n">obj</span><span class="w"> </span><span class="n">performSelector</span><span class="o">:</span><span class="w"> </span><span class="k">@selector</span><span class="p">(</span><span class="n">hello</span><span class="p">)];</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Perl">Perl</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=14" title="Sửa đổi phần “Perl”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=14" title="Sửa mã nguồn tại đề mục: Perl"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/Perl" title="Perl">Perl</a>:</p><div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span></span><span class="c1"># Không dùng reflection</span> <span class="k">my</span><span class="w"> </span><span class="nv">$foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nn">Foo</span><span class="o">-></span><span class="k">new</span><span class="p">;</span> <span class="nv">$foo</span><span class="o">-></span><span class="n">hello</span><span class="p">;</span> <span class="c1"># hoặc</span> <span class="nn">Foo</span><span class="o">-></span><span class="k">new</span><span class="o">-></span><span class="n">hello</span><span class="p">;</span> <span class="c1"># Dùng reflection</span> <span class="k">my</span><span class="w"> </span><span class="nv">$class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Foo"</span> <span class="k">my</span><span class="w"> </span><span class="nv">$constructor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"new"</span><span class="p">;</span> <span class="k">my</span><span class="w"> </span><span class="nv">$method</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"hello"</span><span class="p">;</span> <span class="k">my</span><span class="w"> </span><span class="nv">$f</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$class</span><span class="o">-></span><span class="nv">$constructor</span><span class="p">;</span> <span class="nv">$f</span><span class="o">-></span><span class="nv">$method</span><span class="p">;</span> <span class="c1"># hoặc</span> <span class="nv">$class</span><span class="o">-></span><span class="nv">$constructor</span><span class="o">-></span><span class="nv">$method</span><span class="p">;</span> <span class="c1"># Dùng eval</span> <span class="nb">eval</span><span class="w"> </span><span class="s">"new Foo->hello;"</span><span class="p">;</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="PHP">PHP</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=15" title="Sửa đổi phần “PHP”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=15" title="Sửa mã nguồn tại đề mục: PHP"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/PHP" title="PHP">PHP</a>:</p><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Không dùng reflection</span> <span class="nv">$foo</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Foo</span><span class="p">();</span> <span class="nv">$foo</span><span class="o">-></span><span class="na">hello</span><span class="p">();</span> <span class="c1">// Dùng reflection, thông qua Reflections API</span> <span class="nv">$reflector</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ReflectionClass</span><span class="p">(</span><span class="s1">'Foo'</span><span class="p">);</span> <span class="nv">$foo</span> <span class="o">=</span> <span class="nv">$reflector</span><span class="o">-></span><span class="na">newInstance</span><span class="p">();</span> <span class="nv">$hello</span> <span class="o">=</span> <span class="nv">$reflector</span><span class="o">-></span><span class="na">getMethod</span><span class="p">(</span><span class="s1">'hello'</span><span class="p">);</span> <span class="nv">$hello</span><span class="o">-></span><span class="na">invoke</span><span class="p">(</span><span class="nv">$foo</span><span class="p">);</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Python">Python</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=16" title="Sửa đổi phần “Python”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=16" title="Sửa mã nguồn tại đề mục: Python"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/Python_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Python (ngôn ngữ lập trình)">Python</a>:</p><div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span></span><span class="c1"># Không dùng reflection</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">Foo</span><span class="p">()</span> <span class="n">obj</span><span class="o">.</span><span class="n">hello</span><span class="p">()</span> <span class="c1"># Dùng reflection</span> <span class="n">obj</span> <span class="o">=</span> <span class="nb">globals</span><span class="p">()[</span><span class="s2">"Foo"</span><span class="p">]()</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"hello"</span><span class="p">)()</span> <span class="c1"># Dùng eval</span> <span class="nb">eval</span><span class="p">(</span><span class="s2">"Foo().hello()"</span><span class="p">)</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="R">R</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=17" title="Sửa đổi phần “R”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=17" title="Sửa mã nguồn tại đề mục: R"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ trong <a href="/wiki/R_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="R (ngôn ngữ lập trình)">R</a>:</p><div class="mw-highlight mw-highlight-lang-splus mw-content-ltr" dir="ltr"><pre><span></span><span class="c1"># Không dùng reflection, coi như foo() trả về đối tượng kiểu S3 có mang phương thức "hello"</span> <span class="n">obj</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="nf">foo</span><span class="p">()</span> <span class="nf">hello</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="c1"># Dùng reflection</span> <span class="n">class_name</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="s">"foo"</span> <span class="n">generic_having_foo_method</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="s">"hello"</span> <span class="n">obj</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="nf">do.call</span><span class="p">(</span><span class="n">class_name</span><span class="p">,</span><span class="w"> </span><span class="nf">list</span><span class="p">())</span> <span class="nf">do.call</span><span class="p">(</span><span class="n">generic_having_foo_method</span><span class="p">,</span><span class="w"> </span><span class="nf">alist</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Ruby">Ruby</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=18" title="Sửa đổi phần “Ruby”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=18" title="Sửa mã nguồn tại đề mục: Ruby"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ sử dụng <a href="/wiki/Ruby_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Ruby (ngôn ngữ lập trình)">Ruby</a>:</p><div class="mw-highlight mw-highlight-lang-ruby mw-content-ltr" dir="ltr"><pre><span></span><span class="c1"># Không dùng reflection</span> <span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">Foo</span><span class="o">.</span><span class="n">new</span> <span class="n">obj</span><span class="o">.</span><span class="n">hello</span> <span class="c1"># Dùng reflection</span> <span class="n">class_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"Foo"</span> <span class="n">method_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">:hello</span> <span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">Object</span><span class="o">.</span><span class="n">const_get</span><span class="p">(</span><span class="n">class_name</span><span class="p">)</span><span class="o">.</span><span class="n">new</span> <span class="n">obj</span><span class="o">.</span><span class="n">send</span><span class="w"> </span><span class="n">method_name</span> <span class="c1"># Dùng eval</span> <span class="nb">eval</span><span class="w"> </span><span class="s2">"Foo.new.hello"</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Xojo">Xojo</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=19" title="Sửa đổi phần “Xojo”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=19" title="Sửa mã nguồn tại đề mục: Xojo"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Sau đây là ví dụ sử dụng <a href="/w/index.php?title=Xojo&action=edit&redlink=1" class="new" title="Xojo (trang không tồn tại)">Xojo</a>:</p><div class="mw-highlight mw-highlight-lang-vbnet mw-content-ltr" dir="ltr"><pre><span></span><span class="c">' Không dùng reflection</span> <span class="k">Dim</span><span class="w"> </span><span class="n">fooInstance</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="k">New</span><span class="w"> </span><span class="n">Foo</span> <span class="n">fooInstance</span><span class="p">.</span><span class="n">PrintHello</span> <span class="c">' Dùng reflection</span> <span class="k">Dim</span><span class="w"> </span><span class="n">classInfo</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="n">Introspection</span><span class="p">.</span><span class="n">Typeinfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GetTypeInfo</span><span class="p">(</span><span class="n">Foo</span><span class="p">)</span> <span class="k">Dim</span><span class="w"> </span><span class="n">constructors</span><span class="p">()</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="n">Introspection</span><span class="p">.</span><span class="n">ConstructorInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">classInfo</span><span class="p">.</span><span class="n">GetConstructors</span> <span class="k">Dim</span><span class="w"> </span><span class="n">fooInstance</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="n">Foo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">constructors</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="n">Invoke</span> <span class="k">Dim</span><span class="w"> </span><span class="n">methods</span><span class="p">()</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="n">Introspection</span><span class="p">.</span><span class="n">MethodInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">classInfo</span><span class="p">.</span><span class="n">GetMethods</span> <span class="k">For</span><span class="w"> </span><span class="k">Each</span><span class="w"> </span><span class="n">m</span><span class="w"> </span><span class="ow">As</span><span class="w"> </span><span class="n">Introspection</span><span class="p">.</span><span class="n">MethodInfo</span><span class="w"> </span><span class="ow">In</span><span class="w"> </span><span class="n">methods</span> <span class="w"> </span><span class="k">If</span><span class="w"> </span><span class="n">m</span><span class="p">.</span><span class="n">Name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"PrintHello"</span><span class="w"> </span><span class="k">Then</span> <span class="w"> </span><span class="n">m</span><span class="p">.</span><span class="n">Invoke</span><span class="p">(</span><span class="n">fooInstance</span><span class="p">)</span> <span class="w"> </span><span class="k">End</span><span class="w"> </span><span class="k">If</span> <span class="k">Next</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Xem_thêm"><span id="Xem_th.C3.AAm"></span>Xem thêm</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=20" title="Sửa đổi phần “Xem thêm”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=20" title="Sửa mã nguồn tại đề mục: Xem thêm"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/M%E1%BA%ABu_h%C3%ACnh_l%E1%BA%ADp_tr%C3%ACnh" title="Mẫu hình lập trình">Mô phạm lập trình</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Ghi_chú_thuật_ngữ"><span id="Ghi_ch.C3.BA_thu.E1.BA.ADt_ng.E1.BB.AF"></span>Ghi chú thuật ngữ</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=21" title="Sửa đổi phần “Ghi chú thuật ngữ”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=21" title="Sửa mã nguồn tại đề mục: Ghi chú thuật ngữ"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r71728118">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist columns references-column-count references-column-count-3" style="-moz-column-count: 3; -webkit-column-count: 3; column-count: 3; list-style-type: lower-alpha;"> <ol class="references"> <li id="cite_note-1"><b><a href="#cite_ref-1">^</a></b> <span class="reference-text">Introspect</span> </li> <li id="cite_note-3"><b><a href="#cite_ref-3">^</a></b> <span class="reference-text">Instruction</span> </li> <li id="cite_note-6"><b><a href="#cite_ref-6">^</a></b> <span class="reference-text">Bundling</span> </li> <li id="cite_note-7"><b><a href="#cite_ref-7">^</a></b> <span class="reference-text">Inspect</span> </li> <li id="cite_note-8"><b><a href="#cite_ref-8">^</a></b> <span class="reference-text">Backing field</span> </li> <li id="cite_note-9"><b><a href="#cite_ref-9">^</a></b> <span class="reference-text">Programming idiom</span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="Tham_khảo"><span id="Tham_kh.E1.BA.A3o"></span>Tham khảo</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=22" title="Sửa đổi phần “Tham khảo”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=22" title="Sửa mã nguồn tại đề mục: Tham khảo"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Trích_dẫn"><span id="Tr.C3.ADch_d.E1.BA.ABn"></span>Trích dẫn</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=23" title="Sửa đổi phần “Trích dẫn”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=23" title="Sửa mã nguồn tại đề mục: Trích dẫn"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-2"><b><a href="#cite_ref-2">^</a></b> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r67233549">.mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:"“""”""‘""’"}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}</style><cite class="citation cs2"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20170821214626/http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf"><i>A Tutorial on Behavioral Reflection and its Implementation by Jacques Malenfant et al.</i></a> <span class="cs1-format">(PDF)</span>, unknown, <a rel="nofollow" class="external text" href="http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf">Bản gốc</a> <span class="cs1-format">(PDF)</span> lưu trữ ngày 21 tháng 8 năm 2017<span class="reference-accessdate">, truy cập ngày 23 tháng 6 năm 2019</span></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=A+Tutorial+on+Behavioral+Reflection+and+its+Implementation+by+Jacques+Malenfant+et+al.&rft.pub=unknown&rft_id=http%3A%2F%2Fwww2.parc.com%2Fcsl%2Fgroups%2Fsda%2Fprojects%2Freflection96%2Fdocs%2Fmalenfant%2Fmalenfant.pdf&rfr_id=info%3Asid%2Fvi.wikipedia.org%3AReflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29" class="Z3988"></span></span> </li> <li id="cite_note-4"><b><a href="#cite_ref-4">^</a></b> <span class="reference-text">Brian Cantwell Smith, <a href="https://hdl.handle.net/1721.1/15961" class="extiw" title="hdl:1721.1/15961">Procedural Reflection in Programming Languages</a>, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, PhD dissertation, 1982.</span> </li> <li id="cite_note-5"><b><a href="#cite_ref-5">^</a></b> <span class="reference-text">Brian C. Smith. <a rel="nofollow" class="external text" href="http://publications.csail.mit.edu/lcs/specpub.php?id=840">Reflection and semantics in a procedural language</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20151213034343/http://publications.csail.mit.edu/lcs/specpub.php?id=840">Lưu trữ</a> 2015-12-13 tại <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>. Technical Report MIT-LCS-TR-272, Massachusetts Institute of Technology, Cambridge, Massachusetts, January 1982.</span> </li> <li id="cite_note-10"><b><a href="#cite_ref-10">^</a></b> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r67233549"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www2.iath.virginia.edu/courses/moo/ProgrammersManual.texinfo_4.html">“The MOO Programming Language”</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+MOO+Programming+Language&rft_id=http%3A%2F%2Fwww2.iath.virginia.edu%2Fcourses%2Fmoo%2FProgrammersManual.texinfo_4.html&rfr_id=info%3Asid%2Fvi.wikipedia.org%3AReflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29" class="Z3988"></span></span> </li> <li id="cite_note-11"><b><a href="#cite_ref-11">^</a></b> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r67233549"><cite id="CITEREFBarrosJustMillsteinVines2015" class="citation report cs1">Barros, Paulo; Just, René; Millstein, Suzanne; Vines, Paul; Dietl, Werner; d'Amorim, Marcelo; Ernst, Michael D. (tháng 8 năm 2015). <a rel="nofollow" class="external text" href="https://homes.cs.washington.edu/~mernst/pubs/implicit-control-flow-tr150801.pdf">Static Analysis of Implicit Control Flow: Resolving Java Reflection and Android Intents</a> <span class="cs1-format">(PDF)</span> (Bản báo cáo). University of Washington. UW-CSE-15-08-01<span class="reference-accessdate">. Truy cập ngày 7 tháng 10 năm 2021</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=report&rft.btitle=Static+Analysis+of+Implicit+Control+Flow%3A+Resolving+Java+Reflection+and+Android+Intents&rft.pub=University+of+Washington&rft.date=2015-08&rft.aulast=Barros&rft.aufirst=Paulo&rft.au=Just%2C+Ren%C3%A9&rft.au=Millstein%2C+Suzanne&rft.au=Vines%2C+Paul&rft.au=Dietl%2C+Werner&rft.au=d%27Amorim%2C+Marcelo&rft.au=Ernst%2C+Michael+D.&rft_id=https%3A%2F%2Fhomes.cs.washington.edu%2F~mernst%2Fpubs%2Fimplicit-control-flow-tr150801.pdf&rfr_id=info%3Asid%2Fvi.wikipedia.org%3AReflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29" class="Z3988"></span></span> </li> <li id="cite_note-12"><b><a href="#cite_ref-12">^</a></b> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r67233549"><cite class="citation journal cs1">Eauvidoum, Ieu; disk noise (5 tháng 10 năm 2021). <a rel="nofollow" class="external text" href="http://phrack.org/issues/70/7.html#article">“Twenty years of Escaping the Java Sandbox”</a>. <i><a href="/wiki/Phrack" title="Phrack">Phrack</a></i>. <b>10</b> (46)<span class="reference-accessdate">. Truy cập ngày 7 tháng 10 năm 2021</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Phrack&rft.atitle=Twenty+years+of+Escaping+the+Java+Sandbox&rft.volume=10&rft.issue=46&rft.date=2021-10-05&rft_id=http%3A%2F%2Fphrack.org%2Fissues%2F70%2F7.html%23article&rfr_id=info%3Asid%2Fvi.wikipedia.org%3AReflection+%28khoa+h%E1%BB%8Dc+m%C3%A1y+t%C3%ADnh%29" class="Z3988"></span><span class="cs1-maint citation-comment">Quản lý CS1: sử dụng tham số tác giả (<a href="/wiki/Th%E1%BB%83_lo%E1%BA%A1i:Qu%E1%BA%A3n_l%C3%BD_CS1:_s%E1%BB%AD_d%E1%BB%A5ng_tham_s%E1%BB%91_t%C3%A1c_gi%E1%BA%A3" title="Thể loại:Quản lý CS1: sử dụng tham số tác giả">liên kết</a>)</span></span> </li> </ol></div> <div class="mw-heading mw-heading3"><h3 id="Nguồn"><span id="Ngu.E1.BB.93n"></span>Nguồn</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=24" title="Sửa đổi phần “Nguồn”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=24" title="Sửa mã nguồn tại đề mục: Nguồn"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r41642734">.mw-parser-output .refbegin{font-size:90%;margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{list-style-type:none;margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li,.mw-parser-output .refbegin-hanging-indents>dl>dd{margin-left:0;padding-left:3.2em;text-indent:-3.2em;list-style:none}.mw-parser-output .refbegin-100{font-size:100%}</style><div class="refbegin" style=""> <ul><li>Jonathan M. Sobel và Daniel P. Friedman. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100204091328/http://www.cs.indiana.edu/~jsobel/rop.html"><i>An Introduction to Reflection-Oriented Programming</i></a> (1996), <a href="/w/index.php?title=%C4%90%E1%BA%A1i_h%E1%BB%8Dc_Indiana&action=edit&redlink=1" class="new" title="Đại học Indiana (trang không tồn tại)">Đại học Indiana</a>.</li> <li><a rel="nofollow" class="external text" href="https://www.codeproject.com/Articles/674455/Anti-Reflector-NET-Code-Protection">Anti-Reflection technique using C# and C++/CLI wrapper to prevent code thief</a></li></ul> </div> <div class="mw-heading mw-heading2"><h2 id="Đọc_thêm"><span id=".C4.90.E1.BB.8Dc_th.C3.AAm"></span>Đọc thêm</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=25" title="Sửa đổi phần “Đọc thêm”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=25" title="Sửa mã nguồn tại đề mục: Đọc thêm"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Ira R. Forman và Nate Forman, <i>Java Reflection in Action</i> (2005),<a href="/wiki/ISBN" title="ISBN">ISBN</a> <a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Ngu%E1%BB%93n_s%C3%A1ch/1-932394-18-4" title="Đặc biệt:Nguồn sách/1-932394-18-4">1-932394-18-4</a></li> <li>Ira R. Forman và Scott Danforth, <i>Putting Metaclasses to Work</i> (1999), <a href="/wiki/ISBN" title="ISBN">ISBN</a> <a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Ngu%E1%BB%93n_s%C3%A1ch/0-201-43305-2" title="Đặc biệt:Nguồn sách/0-201-43305-2">0-201-43305-2</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Liên_kết_ngoài"><span id="Li.C3.AAn_k.E1.BA.BFt_ngo.C3.A0i"></span>Liên kết ngoài</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&veaction=edit&section=26" title="Sửa đổi phần “Liên kết ngoài”" class="mw-editsection-visualeditor"><span>sửa</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&action=edit&section=26" title="Sửa mã nguồn tại đề mục: Liên kết ngoài"><span>sửa mã nguồn</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="https://www-master.ufr-info-p6.jussieu.fr/2007/Ajouts/Master_esj20_2007_2008/IMG/pdf/malenfant-ijcai95.pdf">Reflection in logic, functional and object-oriented programming: a short comparative study</a></li> <li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20100204091328/http://www.cs.indiana.edu/~jsobel/rop.html">An Introduction to Reflection-Oriented Programming</a></li> <li><a rel="nofollow" class="external text" href="http://www.laputan.org/#Reflection">Các trang của Brian Foote bàn về Reflection trong Smalltalk</a></li> <li><a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/tutorial/reflect/index.html">Java Reflection API Tutorial</a> từ Oracle</li></ul> <!-- NewPP limit report Parsed by mw‐api‐int.codfw.main‐7db948bbd7‐rfksr Cached time: 20241107082851 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.272 seconds Real time usage: 0.397 seconds Preprocessor visited node count: 1002/1000000 Post‐expand include size: 13655/2097152 bytes Template argument size: 799/2097152 bytes Highest expansion depth: 9/100 Expensive parser function count: 17/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 45603/5000000 bytes Lua time usage: 0.097/10.000 seconds Lua memory usage: 3482124/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 314.065 1 -total 28.18% 88.512 1 Bản_mẫu:Chú_thích 25.08% 78.755 1 Bản_mẫu:Cần_chú_thích 18.58% 58.343 1 Bản_mẫu:Sửa_chữa 17.82% 55.951 2 Bản_mẫu:Xử_lý_thể_loại 9.49% 29.817 1 Bản_mẫu:Danh_sách_ghi_chú 5.53% 17.357 1 Bản_mẫu:Tham_khảo 5.35% 16.801 1 Bản_mẫu:Chú_thích_web 5.16% 16.216 1 Bản_mẫu:Refbegin 4.61% 14.481 2 Bản_mẫu:ISBN --> <!-- Saved in parser cache with key viwiki:pcache:idhash:19201-0!canonical and timestamp 20241107082851 and revision id 69425319. Rendering was triggered because: api-parse --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Lấy từ “<a dir="ltr" href="https://vi.wikipedia.org/w/index.php?title=Reflection_(khoa_học_máy_tính)&oldid=69425319">https://vi.wikipedia.org/w/index.php?title=Reflection_(khoa_học_máy_tính)&oldid=69425319</a>”</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Th%E1%BB%83_lo%E1%BA%A1i" title="Đặc biệt:Thể loại">Thể loại</a>: <ul><li><a href="/wiki/Th%E1%BB%83_lo%E1%BA%A1i:C%E1%BA%A5u_tr%C3%BAc_l%E1%BA%ADp_tr%C3%ACnh" title="Thể loại:Cấu trúc lập trình">Cấu trúc lập trình</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Thể loại ẩn: <ul><li><a href="/wiki/Th%E1%BB%83_lo%E1%BA%A1i:B%E1%BA%A3n_m%E1%BA%ABu_webarchive_d%C3%B9ng_li%C3%AAn_k%E1%BA%BFt_wayback" title="Thể loại:Bản mẫu webarchive dùng liên kết wayback">Bản mẫu webarchive dùng liên kết wayback</a></li><li><a href="/wiki/Th%E1%BB%83_lo%E1%BA%A1i:Qu%E1%BA%A3n_l%C3%BD_CS1:_s%E1%BB%AD_d%E1%BB%A5ng_tham_s%E1%BB%91_t%C3%A1c_gi%E1%BA%A3" title="Thể loại:Quản lý CS1: sử dụng tham số tác giả">Quản lý CS1: sử dụng tham số tác giả</a></li><li><a href="/wiki/Th%E1%BB%83_lo%E1%BA%A1i:B%C3%A0i_vi%E1%BA%BFt_c%C3%B3_tr%C3%ADch_d%E1%BA%ABn_kh%C3%B4ng_kh%E1%BB%9Bp" title="Thể loại:Bài viết có trích dẫn không khớp">Bài viết có trích dẫn không khớp</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Trang này được sửa đổi lần cuối vào ngày 14 tháng 12 năm 2022, 05:06.</li> <li id="footer-info-copyright">Văn bản được phát hành theo <a href="/wiki/Wikipedia:Nguy%C3%AAn_v%C4%83n_Gi%E1%BA%A5y_ph%C3%A9p_Creative_Commons_Ghi_c%C3%B4ng%E2%80%93Chia_s%E1%BA%BB_t%C6%B0%C6%A1ng_t%E1%BB%B1_phi%C3%AAn_b%E1%BA%A3n_4.0_Qu%E1%BB%91c_t%E1%BA%BF" title="Wikipedia:Nguyên văn Giấy phép Creative Commons Ghi công–Chia sẻ tương tự phiên bản 4.0 Quốc tế">Giấy phép Creative Commons Ghi công–Chia sẻ tương tự</a>; có thể áp dụng điều khoản bổ sung. Với việc sử dụng trang web này, bạn chấp nhận <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use/vi">Điều khoản Sử dụng</a> và <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/vi">Quy định quyền riêng tư</a>. Wikipedia® là thương hiệu đã đăng ký của <a rel="nofollow" class="external text" href="https://www.wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, một tổ chức phi lợi nhuận.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Quy định quyền riêng tư</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:Gi%E1%BB%9Bi_thi%E1%BB%87u">Giới thiệu Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Ph%E1%BB%A7_nh%E1%BA%ADn_chung">Lời phủ nhận</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Bộ Quy tắc Ứng xử Chung</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Lập trình viên</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/vi.wikipedia.org">Thống kê</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Tuyên bố về cookie</a></li> <li id="footer-places-mobileview"><a href="//vi.m.wikipedia.org/w/index.php?title=Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)&section=21&veaction=edit&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Phiên bản di động</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-57488d5c7d-sj6fv","wgBackendResponseTime":186,"wgPageParseReport":{"limitreport":{"cputime":"0.272","walltime":"0.397","ppvisitednodes":{"value":1002,"limit":1000000},"postexpandincludesize":{"value":13655,"limit":2097152},"templateargumentsize":{"value":799,"limit":2097152},"expansiondepth":{"value":9,"limit":100},"expensivefunctioncount":{"value":17,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":45603,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 314.065 1 -total"," 28.18% 88.512 1 Bản_mẫu:Chú_thích"," 25.08% 78.755 1 Bản_mẫu:Cần_chú_thích"," 18.58% 58.343 1 Bản_mẫu:Sửa_chữa"," 17.82% 55.951 2 Bản_mẫu:Xử_lý_thể_loại"," 9.49% 29.817 1 Bản_mẫu:Danh_sách_ghi_chú"," 5.53% 17.357 1 Bản_mẫu:Tham_khảo"," 5.35% 16.801 1 Bản_mẫu:Chú_thích_web"," 5.16% 16.216 1 Bản_mẫu:Refbegin"," 4.61% 14.481 2 Bản_mẫu:ISBN"]},"scribunto":{"limitreport-timeusage":{"value":"0.097","limit":"10.000"},"limitreport-memusage":{"value":3482124,"limit":52428800}},"cachereport":{"origin":"mw-api-int.codfw.main-7db948bbd7-rfksr","timestamp":"20241107082851","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Reflection (khoa h\u1ecdc m\u00e1y t\u00ednh)","url":"https:\/\/vi.wikipedia.org\/wiki\/Reflection_(khoa_h%E1%BB%8Dc_m%C3%A1y_t%C3%ADnh)","sameAs":"http:\/\/www.wikidata.org\/entity\/Q1056451","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q1056451","author":{"@type":"Organization","name":"Nh\u1eefng ng\u01b0\u1eddi \u0111\u00f3ng g\u00f3p v\u00e0o c\u00e1c d\u1ef1 \u00e1n Wikimedia"},"publisher":{"@type":"Organization","name":"Qu\u1ef9 Wikimedia","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2005-11-19T11:13:14Z","dateModified":"2022-12-14T05:06:07Z"}</script> </body> </html>