Количество контуров в изображении, размер вектора представляет количество точек на контуре. Поймите явабцы
Соответствующим интросспектором английского слова является интроспектор, который в основном используется для эксплуатации Javabeans. Javabean - это особый класс Java, а некоторые методы соответствуют определенным правилам именования. Если некоторые методы в классе Java соответствуют определенным правилам именования, их можно использовать в качестве Javabeans.
Javabean - это специальный класс Java, который в основном используется для передачи данных. Методы в этом классе Java в основном используются для доступа к частным полям, а имя метода соответствует определенным правилам именования.
Если вы хотите передать несколько информации между двумя модулями, вы можете инкапсулировать эту информацию в Javabean, которое обычно называют ValueObject (Vo для короткого). Эта информация хранится в классе с использованием частных полей. Если значения этих полей прочитаны или установлены, к ним необходимо получить доступ с помощью некоторых соответствующих методов. Как вы думаете, имена этих методов хороши? Свойства Javabean определяются на основе методов сеттера и получения в нем, а не на основе переменных членов в нем. Если метод называется SETID, это означает настройку идентификатора на китайском языке. Что касается того, на какую переменную вы ее храните, будет ли она работать? Если метод называется GetID, это означает получить удостоверение личности на китайском языке. Что касается какой переменной, из которой вы его берете, уместно ли это? Удалите префикс SET, а оставшаяся часть - это имя атрибута. Если вторая буква оставшейся части является строчной строкой, измените первую букву оставшейся части на маленькую.
Например:
Имя атрибута setId () -> id
Имя атрибута Islast () -> Последнее
Каково имя атрибута SetCpu? -> ЦП
Как называется атрибут Getups? -> UPS
Короче говоря, когда класс используется в качестве Javabean, свойства Javabean выводятся на основе имени метода, и он вообще не может увидеть переменные элемента внутри класса Java.
Класс, который соответствует характеристикам Javabeans, может использоваться в качестве обычного класса, но использование его в качестве Javabean определенно принесет некоторые дополнительные преимущества, прежде чем мы сможем понять и применить Javabeans! Преимущества следующие:
В разработке Javaee часто используются джавабцы. Многие среды требуют работы в режиме Javabean. Если другие используют и требуют этого, то у вас нет выбора!
JDK предоставляет некоторые API для эксплуатации Javabeans, и этот набор API называется самоанализом. Если вы хотите получить доступ к частному x сами через метод Getx, как это сделать, сложно, верно? Использование самоанализа для эксплуатации Javabeans более удобно, чем использование обычных классов.
Простое самоанализ Javabean
Класс java.beans.propertydescriptor в основном используется для получения свойства Javabean в определенном наборе свойств объекта класса, а затем вызовите методы getReadMethod () и getWriteMethod () для получения соответствующих методов получения и установки.
Пример кода:
Домен класс:
[CPP] ViewPlaincopy
intmain ()
Package usstc.lichunchun.bean; import java.util.date; открытый класс Reflectpoint {частная дата день рождения = новая дата (); private int x; public int y; public String str1 = "Ball"; public String str2 = "Баскетбол"; public String str3 = "itcast"; public upertoint (int x, int y) {super (); this.x = x; {final int prime = 31; int result = 1; result = prime * result + x; ruled = prime * result + y; return result;}@переопределить публичные логические равенства (Object obj) {if (this == obj) вернуть true; if (obj == null) вернуть false; ifclass ()! false;if (y != other.y) return false;return true;}@Override public String toString(){return str1 + ":" + str2 + ":" + str3;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public Date getBirthDay () {return Birthday;} public void setBirthDay (дата рождения) {this.BirthDay = день рождения;}}Простая операция самоанализа:
Package usstc.lichunchun.bean; импорт java.beans.beaninfo; import java.beans.intropcectionException; import java.beans.intropectionException; импорт java.beans.introspeptor; import java.beans.propertydescriptor; import java.lang.langempret.invectexpectexpectexpectex java.lang.reflect.method; открытый класс Interspectortest {public static void main (string [] args) бросает исключение {Reflectpoint pt1 = new ReflectPoint (3, 5); String PropertyName = "x"; // "x"-> "x"-> "getx"-> methodgetX-> getProperty (pt1, vatrodname); 7; setProperty (pt1, PropertyName, value); System.out.println (pt1.getx ());} private static void setProperty (Object Pt1, String PropertyName, значение объекта) Throws IntrospectionException, allodalAccessexception, vocationTargetexcept pt1.getClass ()); Method MethodSetx = pd.getWriteMethod (); MethodSetx.invoke (pt1, значение);} Частный статический объект getProperty (Object pt1, String property -name) Throws InterospectionException, newgleCcessExcept pt1.getClass ()); Method Methodgetx = pd.getReadMethod (); methodgetx.invoke (pt1);}}Сложные интроспективные операции на джавебцах
Используйте метод пересечения всех свойств Beaninfo, чтобы найти и установить x свойства объекта Refectpoint. В программе рассматривайте класс как Javabean, это означает, что вы называете метод Introspepper.getbeaninfo, а полученный объект Beaninfo инкапсулирует результат информации о лечении этого класса как Javabean.
Сложная интроспективная операция:
Package usstc.lichunchun.bean; импорт java.beans.beaninfo; import java.beans.intropcectionException; import java.beans.intropectionException; импорт java.beans.introspeptor; import java.beans.propertydescriptor; import java.lang.langempret.invectexpectexpectexpectex java.lang.reflect.method; открытый класс Interspectortest {public static void main (string [] args) бросает исключение {ReflectPoint pt1 = новая точка отражения (3, 5); string propertyname = "x"; // "x"-> "x"-> "getx"-> methodgetx-> object retval = getProperty (pt1,> "getx" PropertyName); System.out.println (retval); vitude = 7; setProperty (pt1, propertyname, value); System.out.println (pt1.getx ());} private static void setPropert New PropertyDescriptor (PropertyName, pt1.getClass ()); Method methodsetx = pd.getWritemethod (); methodsetx.invoke (pt1, value);} Частный статический объект getProperty (Object pt1, String PropertyName) THRESPECTIONSEXCEPTIO PropertyDescriptor (PropertyName, pt1.getClass ()); Method methodgetx = pd.getReadMethod (); methodgetx.invoke (pt1); */Beaninfo beaninfo = Introspepper.getbeaninfo (pt1.getClass ()); PropertyDescriptor [] pds = beaninfo.getPropertyDescriptors (); Object retval = null; для (PropertyDescriptor pd: pds) {if (pd.getname (). Pd.getReadMethod (); retval = methodgetx.invoke (pt1); break;}} return retval;}}}Манипулирование джабейнами с использованием инструментария Beanatils
Основываясь на предыдущем примере самоанализа, используйте класс Banuatils, чтобы сначала получить исходное свойство SET, а затем установите его на новое значение. Результат возвращается, когда атрибут GET является строкой. При атрибуте SET он может принять любой тип объектов, и обычно используются строки.
Используйте класс PropertyUtils, чтобы сначала получить исходное свойство SET, а затем установите его на новое значение. Результатом, возвращающимся, когда атрибут GET является исходным типом атрибута, и когда атрибут SET является только исходным типом атрибута.
ПРИМЕЧАНИЕ. Перед использованием этих двух классов вам необходимо импортировать два JAR Packages Commons-Beanutils.jar и Commons-Logging-1.1.jar в папке LIB проекта Eclipse и AddToBuildPath.
Пример кода:
Package usstc.lichunchun.bean; импорт java.beans.beaninfo; import java.beans.intropcectionException; import java.beans.intropectionException; импорт java.beans.introspeptor; import java.beans.propertydescriptor; import java.lang.langempret.invectexpectexpectexpectex java.lang.reflect.method; import org.apache.commons.beanutils.beanutils; import org.apache.commons.beanutils.propertyutils; открытый класс Interspectortest {public Static void main (String [] args) Throws Exception {RefertPoint pt1 = new ReflectPoint (3, 5); "x"; // "x"-> "x"-> "getx"-> methodgetx-> object retval = getProperty (pt1, propertyname); System.out.println (retval); значение объекта = 7; setProperty (pt1, propertyname, value); System.out.println (beanutils.getproperty (pt1, value); "x"). getClass (). getName ()); // string beanutils.setproperty (pt1, "x", "9"); System.out.println (pt1.getx ());/* map map = {name: "zxx", возраст: 18}; // новые особенности Java7 beanutils. */Beanutils.setproperty (pt1, «день рождения», «111"); // Система цепочки атрибутов поддержки. "x"). getClass (). getName ()); // Integer/* Разница между бианхаааааааааааааааааааааааааааааазыцветомязназмеяяяяякомдельческом разнице в форме биантура и свойства. PropertyName, значение объекта) Throws IntroscectionException, OldalAccessException, InvocationTargetException {PropertyDescriptor PD = New PropertyDescriptor (PropertyName, pt1.getClass ()); Method MethodSetx = pd.getWriteMethod (); methodsetx.invoke (pt1, value);} частный статический объект getProperty (объект pt1, string property -name) Throws InteroscectionException, allodalAccessexception, vococationTargetException {/* PropertyDescriptor PD = New PropertyDescriptor (PropertyName, pt1.getClass ()); Method methodgetx = pd.getReadMethod (); methodgetx.invoke (pt1); */Beaninfo beaninfo = Introspepper.getbeaninfo (pt1.getClass ()); PropertyDescriptor [] pds = beaninfo.getPropertyDescriptors (); Object retval = null; для (PropertyDescriptor pd: pds) {if (pd.getname (). Pd.getReadMethod (); retval = methodgetx.invoke (pt1); break;}} return retval;}}}Суммировать
Выше всего посвящено анализу интроспективных случаев Java, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!