Pastebin.vip
Create
Recent
Trending
About
Basic operation -- Reflection fill data
From , 2 Years ago, written in Java, viewed 211 times.
URL
https://pastebin.vip/view/f3f1b7fc
Embed
—
Expand Paste
to full width of browser
1
.主类
package
s0401反射实例自动填充
;
import
java.lang.reflect.Field
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
Main
{
public
static
void
main
(
String
[
]
args
)
throws
Exception
{
//资料库
Map
<
String
,String
>
data
=
new
HashMap
<
String
,String
>
(
)
;
data.
put
(
"name"
,
"fengwei"
)
;
data.
put
(
"age"
,
"19"
)
;
data.
put
(
"tel"
,
"909"
)
;
//获得className 字符串的实例对象
Class
s
=
Class
.
forName
(
"s0401反射实例自动填充.Users"
)
;
//调用forName("X") 将导致名为 X 的类被初始化。properties中存放的是类的名称
//对象实例化
Object
obj
=
s.
newInstance
(
)
;
//自动填充数据
autoFile
(
obj,data
)
;
//输出获得的实例对象
System
.
out
.
println
(
obj
)
;
}
private
static
void
autoFile
(
Object
obj, Map
<
String
, String
>
data
)
throws
IllegalArgumentException
,
IllegalAccessException
{
//获得填充数据中的所有字段,然后将此字段在数据源data中查询,如果有则填充
//获得字节码对象
Class
a
=
obj.
getClass
(
)
;
//获得所有的私有字段
Field
[
]
fields
=
a.
getDeclaredFields
(
)
;
for
(
Field
f
:
fields
)
{
//在资料库中获得需要的数据
String
value
=
data.
get
(
f.
getName
(
)
)
;
//在资料库中查找有没有对应要填充的字段
//强制设置权限,不然无法改变值
f.
setAccessible
(
true
)
;
//如果有需要的字段就填充到obj中
if
(
value
!=
null
)
{
f.
set
(
obj, value
)
;
//填充值
}
}
}
}
2
.
User
类
package
s0401反射实例自动填充
;
public
class
User
{
private
String
name
;
private
String
age
;
private
String
tel
;
public
String
getTel
(
)
{
return
tel
;
}
public
void
setTel
(
String
tel
)
{
this
.
tel
=
tel
;
}
public
String
getName
(
)
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getAge
(
)
{
return
age
;
}
public
void
setAge
(
String
age
)
{
this
.
age
=
age
;
}
@Override
public
String
toString
(
)
{
return
"User [name="
+
name
+
", age="
+
age
+
", tel="
+
tel
+
"]"
;
}
}
Reply to "Basic operation -- Reflection fill data"
Here you can reply to the paste above
Author
What's your name?
Title
Give your paste a title.
Language
What language is your paste written in?
Plain Text
HTML5
CSS
JavaScript
PHP
Python
Ruby
Lua
Bash
Erlang
Go
C
C++
Diff-output
LaTeX
SQL
XML
-----------------
4CS
MOS 6502
MOS 6502 Kick Assembler
MOS 6502 TASM/64TASS
Motorola 68000 Devpac Assembler
ABAP
Actionscript
ActionScript3
Ada
AIMMS
ALGOL 68
Apache
AppleScript
Apt sources.list
ARM Assembler
x86 Assembler
asymptote
ASP
autoconf
Autohotkey
AutoIT
AviSynth
Awk
BASCOM AVR
Basic4GL
BBCode
Brainfuck
BibTeX
BlitzBasic
BNF (Backus-Naur form)
Boo
C (for LoadRunner)
C for Macs
C with WiAPI
CAD DCL (Dialog Control Language)
AutoCAD/IntelliCAD Lisp
CFDG
ColdFusion
ChaiScript
Chapel
CIL (Common Intermediate Language)
Clojure
CMake
COBOL
CoffeeScript
C++ with WinAPI
C#
Cuesheet
D
Dart
DCS
DCL
DCPU/16 Assembly
Delphi (Object Pascal)
DIV
DOS
dot
E
ECMAScript
Eiffel
Email (mbox/eml/RFC format)
Enerscript
Euphoria
EZT
Formula One
Falcon
fo
Fortran
FreeBasic
FreeSWITCH
F#
GAMBAS
GDB
Genero
Genie
GNU Gettext .po/.pot
glSlang
GML
Gnuplot script
Groovy
GwBasic
Haskell
Haxe
HicEst
HQ9+
HTML 4.01 strict
Icon
Unoidl
INI
Inno Script
INTERCAL
Io
ISPF Panel
J
Java
Java 5
Job Control Language
jQuery 1.3
KLone with C
KLone with C++
Kotlin
Liberty BASIC
LDIF
Generic Lisp
LLVM
Locomotive Basic (Amstrad CPC series)
Logcat
Logtalk
LOLcode
@Formula/@Command
LotusScript
Lightwave Script
Linden Scripting
Motorola 68000 Assembler
MagikSF
Make
MapBasic
Matlab M-file
mIRC Scripting
MMIX Assembler
Modula-2
Modula-3
Microchip Assembler
MXML
MySQL
Nagios
NetRexx
newLISP
nginx
Nimrod
Nullsoft Scriptable Install System
Oberon-2
Objective-C
Objeck Programming Language
OCaml (Objective Caml)
GNU Octave M-file
OpenOffice.org Basic
ooRexx
Oracle 11i
Oracle 8
Delphi Prism (Oxygene)
Oz
ParaSail
PARI/GP
Pascal
PCRE
Per (forms)
Perl
Perl 6
OpenBSD packet filter
PIC16 Assembler
Pike
Pixel Bender 1.0
PL/I
Oracle 9.2 PL/SQL
PostgreSQL
Postscript
Povray
PowerBuilder (PowerScript)
PowerShell
ProFTPd
Progress
Prolog
Property
ProvideX
PureBasic
Python for S60
q/kdb+
QBasic/QuickBASIC
QML
Racket
Ruby (with Ruby on Rails Framework)
RBS Script
Rebol
Microsoft Registry Editor
Rexx
robots.txt
RPM Spec
R
Rust
SAS
Scala
Scheme
SciLab
SCL
sdlBasic
Smalltalk
Smarty template
SPARK
SPARQL
StandardML
StoneScript
SystemVerilog IEEE 1800-2009(draft8)
TCL/iTCL
Tera Term Macro
thinBasic
T-SQL
TypoScript
Unicon
UnrealScript
UPC
Urbi
Vala
Visual Basic
VB.NET
VBScript
Vedit macro language
Verilog
VHDL
Vim scripting
Visual FoxPro
Visual Prolog
Whitespace
Whois response (RPSL format)
WinBatch
XBasic
xorg.conf
Axapta/Dynamics Ax X++
YAML
ZiLOG Z80 Assembler
ZXBasic
Your paste
Paste your paste here
1.主类 package s0401反射实例自动填充; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) throws Exception { //资料库 Map
data=new HashMap
(); data.put("name","fengwei"); data.put("age","19"); data.put("tel","909"); //获得className 字符串的实例对象 Class s=Class.forName("s0401反射实例自动填充.Users"); //调用forName("X") 将导致名为 X 的类被初始化。properties中存放的是类的名称 //对象实例化 Object obj=s.newInstance(); //自动填充数据 autoFile(obj,data); //输出获得的实例对象 System.out.println(obj); } private static void autoFile(Object obj, Map
data) throws IllegalArgumentException, IllegalAccessException { //获得填充数据中的所有字段,然后将此字段在数据源data中查询,如果有则填充 //获得字节码对象 Class a=obj.getClass(); //获得所有的私有字段 Field[] fields=a.getDeclaredFields(); for(Field f:fields) { //在资料库中获得需要的数据 String value=data.get(f.getName());//在资料库中查找有没有对应要填充的字段 //强制设置权限,不然无法改变值 f.setAccessible(true); //如果有需要的字段就填充到obj中 if(value!=null) { f.set(obj, value);//填充值 } } } } 2.User类 package s0401反射实例自动填充; public class User { private String name; private String age; private String tel; public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", tel=" + tel + "]"; } }
Create Shorturl
Create a shorter url that redirects to your paste?
Private
Private paste aren't shown in recent listings.
Delete After
When should we delete your paste?
Burn on reading
5 Minutes
1 Hour
1 Day
1 Week
1 Month
1 Year
Keep Forever
Spam protection
Type in the letters
Create
https://burned.cc - Burn After Reading Website