عدد المعالم في الصورة ، ويمثل حجم المتجه عدد النقاط الموجودة على الكفاف. فهم جافابانز
المنقذ الإنجليزي المقابل هو المنتدى المتنافس ، والذي يستخدم بشكل أساسي لتشغيل Javabeans. Javabean هي فئة خاصة Java ، وبعض الطرق تلبي قواعد تسمية معينة. إذا كانت بعض الطرق في فصل Java تلبي قواعد تسمية معينة ، فيمكن استخدامها كجافابانز.
Javabean هي فئة Java خاصة ، تستخدم بشكل رئيسي لتمرير معلومات البيانات. تُستخدم الأساليب في فئة Java هذه بشكل أساسي للوصول إلى الحقول الخاصة ، ويتوافق اسم الطريقة مع بعض قواعد التسمية.
إذا كنت ترغب في تمرير معلومات متعددة بين وحدتين ، فيمكنك تغليف هذه المعلومات في Javabean ، والتي تسمى عادةً ValueBject (VO لفترة قصيرة). يتم تخزين هذه المعلومات في الفصل باستخدام الحقول الخاصة. إذا تمت قراءة أو تعيين قيم هذه الحقول ، فيجب الوصول إليها من خلال بعض الطرق المقابلة. ما رأيك في أسماء هذه الأساليب جيدة؟ يتم تحديد خصائص Javabean بناءً على أساليب Setter و Getter فيه ، بدلاً من بناء متغيرات الأعضاء فيه. إذا تم تسمية الطريقة setID ، فهذا يعني تعيين معرف باللغة الصينية. أما بالنسبة للمتغير الذي تقوم بتخزينه ، فهل سيعمل؟ إذا تسمى الطريقة GetId ، فهذا يعني الحصول على هوية باللغة الصينية. أما بالنسبة للمتغير الذي تأخذه منه ، هل هو مناسب؟ قم بإزالة بادئة المجموعة والجزء المتبقي هو اسم السمة. إذا كان الحرف الثاني من الجزء المتبقي صغيرًا ، فقم بتغيير الحرف الأول من الجزء المتبقي إلى الحرف الصغير.
على سبيل المثال:
اسم سمة setID () -> معرف
اسم سمة ISLAST () -> الأخير
ما هو اسم سمة setcpu؟ -> وحدة المعالجة المركزية
ما هو اسم السمة من GetUps؟ -> UPS
باختصار ، عند استخدام الفصل كصرف جافابين ، يتم استنتاج خصائص Javabean استنادًا إلى اسم الطريقة ، ولا يمكنها رؤية متغيرات الأعضاء داخل فئة Java على الإطلاق.
يمكن استخدام الفصل الذي يتوافق مع خصائص Javabeans كفئة طبيعية ، ولكن استخدامه كجافابين سيحقق بالتأكيد بعض المزايا الإضافية قبل أن نتمكن من فهم وتطبيق Javabeans! الفوائد على النحو التالي:
في تطوير Javaee ، غالبًا ما تستخدم Javabeans. تتطلب العديد من البيئات عمليات في وضع Javabean. إذا استخدم الآخرون ويطلبون ذلك ، فليس لديك خيار!
يوفر JDK بعض واجهات برمجة التطبيقات لتشغيل Javabeans ، وتسمى هذه المجموعة من واجهات برمجة التطبيقات الاستبطان. إذا كنت ترغب في الوصول إلى Private X بنفسك من خلال طريقة GETX ، فإن كيفية القيام بذلك أمر صعب ، أليس كذلك؟ يعد استخدام الاستبطان لتشغيل Javabeans أكثر ملاءمة من استخدام الطبقات العادية.
التأمل البسيط ل javabean
يتم استخدام فئة Java.beans.PropertyDescriptor بشكل أساسي للحصول على خاصية Javabean في مجموعة خاصية كائن فئة معينة ، ثم اتصل بطرق GetReadMethod () وطرق GetWritemethod () للحصول على طرق الحصول على الحصول على المقابلة.
مثال رمز:
فئة المجال:
[CPP] ViewPlaincopy
intmain ()
package usstc.lichunchun.bean ؛ import java.util.date ؛ الطبقة العامة تعكس نقطة {private date birthday = new Date () ؛ private int x ؛ public y ؛ string str1 = "ball" ؛ السلسلة العامة str2 = "كرة السلة" {Final int prem = 31 ؛ int result = 1 ؛ result = prime * result + x ؛ result = prime * result + y ؛ return return ؛}@Override public boolean equals (object obj) {if (this == obj) return ؛ false ؛ if (y! = other.y) return false ؛ return true ؛}@تجاوز السلسلة العامة toString () {return str1 + ":" + str2 + ": getBirthday () {return birthday ؛} public void setbirthday (Date Birthday) {this.birthday = birthday ؛}}عملية التأمل البسيطة:
package ustc.lichunchun.bean ؛ استيراد java.beans.beaninfo ؛ استيراد java.beans.introspectionexception ؛ استيراد java.beans.introspectionexception ؛ import java.beans.Introspector java.lang.reflect.method ؛ introspresist introsestorest {public static void main (string [] args) يرمي الاستثناء {respervointpoint pt1 = new Refference (3 ، 5) ؛ string propertyName = "x" ؛ // "x"-> "x"- propertyName ، value) ؛ system.out.println (pt1.getx ()) ؛} private static void setProperty (Object Pt1 ، string propertyName ، value Object) يلقي OffectionException ، pt1.getClassexception ، methodsctivexception pd.getWriteMethod () ؛ methodsetx.invoke (pt1 ، value) ؛} getProperty الكائن الثابت الخاص (الكائن pt1 ، string propertyName) يلقي OffectionException ، invalicalAccessException ، methodgetexception pd.getReadMethod () ؛ methodgetx.invoke (pt1) ؛}}العمليات المعقدة المعقدة على جافابانز
استخدم طريقة اجتياز جميع خصائص BeanInfo للعثور على خصائص X للكائن X وضبطها. في البرنامج ، تعامل مع الفصل على أنه جافابان ، فهذا يعني استدعاء طريقة interpector.getBeanInfo ، ويغلف كائن BeanInfo الناتج معلومات نتيجة معاملة هذه الفئة على أنها Javabean.
العملية الاستقصائية المعقدة:
package ustc.lichunchun.bean ؛ استيراد java.beans.beaninfo ؛ استيراد java.beans.introspectionexception ؛ استيراد java.beans.introspectionexception ؛ import java.beans.Introspector java.lang.reflect.method ؛ الطبقة العامة introspectortest {public static void main (string [] args) يرمي الاستثناء {respervointpoint pt1 = new Refference (3 ، 5) ؛ string propertyName = "x" ؛ // "X"-> "X"-> "getx"- propertyName) ؛ system.out.println (retval) ؛ قيمة الكائن = 7 ؛ setProperty (pt1 ، propertyName) propertyDescriptor (propertyName ، pt1.getClass ()) ؛ methodsetx = pd.getWriteMethod () ؛ methodsetx.invoke (pt1 ، القيمة) PropertyDescriptor (propertyName ، pt1.getClass ()) ؛ طريقة methodgetx = pd.getReadMethod () ؛ methodgetx.invoke (PT1) ؛ */BeanInfo BeanInfo = interSpector.getBeanInfo (pt1.getClass ()) ؛ propertyDescriptor [] pds = beaninfo.getPropertyDescriptors () pd.getReadMethod () ؛ retval = methodgetx.invoke (pt1) ؛ break ؛}} retval ؛}}}معالجة Javabeans باستخدام مجموعة أدوات BeanUtils
استنادًا إلى مثال الاستبطان السابق ، استخدم فئة BeanUtils للحصول على خاصية المجموعة الأصلية أولاً ، ثم قم بتعيينها على قيمة جديدة. تم إرجاع النتيجة عندما تكون سمة الحصول على سلسلة. عند السمة المحددة ، يمكن أن تقبل أي نوع من الكائنات ، وعادة ما يتم استخدام السلاسل.
استخدم فئة PropertyUtils للحصول على خاصية SET الأصلية أولاً ، ثم قم بتعيينها على قيمة جديدة. يتم إرجاع النتيجة عندما تكون سمة GET هي النوع الأصلي للسمة ، وعندما تكون سمة SET هي النوع الأصلي فقط من السمة.
ملاحظة: قبل استخدام هاتين الفئتين ، تحتاج إلى استيراد حزم اثنين من المشاعين beanutils.jar و commons-logging-1.1.jar في مجلد lib لمشروع Eclipse ، و addtobuildpath.
مثال رمز:
package ustc.lichunchun.bean ؛ استيراد java.beans.beaninfo ؛ استيراد java.beans.introspectionexception ؛ استيراد java.beans.introspectionexception ؛ import java.beans.Introspector java.lang.reflect.method ؛ import org.apache.commons.beanutils.beanutils ؛ import org.apache.commons.beanutils.propertyUtils ؛ public class introsestorest {public static void main (string [] "x" ؛ // "x"-> "x"-> "getx"-> methodgetx-> object retval = getProperty (pt1 ، propertyName) ؛ system.out.println (retval) ؛ compital value = 7 ؛ setProperty (pt1 ، propertyName ، value) ؛ system.println "x"). getClass (). getName ()) ؛ // string beanutils.setProperty (pt1 ، "x" ، "9") ؛ system.out.println (pt1.getx ()) ؛/* map map = {name: "zxx" ، age: 18} ؛ */BeanUtils.setProperty (PT1 ، "Birthday.time" ، "111") ؛ // دعم سلسلة السمات system.out.println (BeanUtils.getProperty (pt1 ، "birthday.time") "x"). getClass (). getName ()) ؛ // integer/* الاختلاف بين الفاصوليل والمتناسبين: يمكن أن تعمل beanutils في شكل سلسلة ، ويمكن أيضًا تشغيل فصول MAP ، ويمكن تحويل javabeans والخريطة إلى بعضها البعض (وصف property ، populate) property the property property javabean. string propertyName ، قيمة الكائن) يلقي OffectionException ، غير aluallyalAccessException ، invocationTargetException {propertyDescriptor pd = new propertyDescriptor (propertyName ، pt1.getClass ()) ؛ methodSetx = pd.getWriteMethod () ؛ methodsetx.invoke (pt1 ، value) ؛} getProperty الكائن الثابت الخاص (الكائن pt1 ، string propertyName) يلقي OffectionException ، invalicalAccessexception ، invocationTargetException {/* propertyDescriptor pd = new propertyDescriptor (propertname ، pt1.getClass ()) ؛ طريقة methodgetx = pd.getReadMethod () ؛ methodgetx.invoke (PT1) ؛ */BeanInfo BeanInfo = interSpector.getBeanInfo (pt1.getClass ()) ؛ propertyDescriptor [] pds = beaninfo.getPropertyDescriptors () pd.getReadMethod () ؛ retval = methodgetx.invoke (pt1) ؛ break ؛}} retval ؛}}}لخص
ما ورد أعلاه هو كل شيء عن تحليل الحالات الاستباقية Java ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!