powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Пользовательская аннотация
25 сообщений из 27, страница 1 из 2
Пользовательская аннотация
    #38489410
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

Подскажите можно ли писать СВОИ аннотации
Т.е. аналог библиотекам HIBERNATE

@Column(name="DAY" format="DD/MM/YYYY")

Подкиньте ссылки и примеры

Спасибо
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38489543
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Гуглить apt и доки по Reflection API.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38489584
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё вопрос в тему: можно ли создавать аннотации уровня компиляции вроде override, то есть реализовать какие то проверки кода на этапе компиляции?
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38489595
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiverЕщё вопрос в тему: можно ли создавать аннотации уровня компиляции вроде override, то есть реализовать какие то проверки кода на этапе компиляции?
Можно. apt это как раз инструмент который работает во время компиляции.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38489750
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Спасибо - получилось !
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38490826
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Пишут что апт в следующем мажорном релизе уберут, и пользоваться нужно javax.annotation.processing и javax.lang.model.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38490902
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XДоброго дня господа !

Подскажите можно ли писать СВОИ аннотации
Т.е. аналог библиотекам HIBERNATE

@Column(name="DAY" format="DD/MM/YYYY")

Подкиньте ссылки и примеры

Спасибо
Можно сравнительно легко закодить свои аннотации. Почитать у Хорстмана во 2-м томе.
Но аннотация сама по себе ничего не делает. Это просто Label. Или атрибут в декларации
пакета/класса/поля или метода.

А вот когда аннотация создана, применена и ты готов сделать ее хендлер. Вот это
интересная тема.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38491150
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА вот когда аннотация создана, применена и ты готов сделать ее хендлер. Вот это
интересная тема.


Да сделал уже - загрузка текстового файла в разные классы под обработку Hibernate
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38492344
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дай людЯм код, хвастун. Ато прибежал, заинтриговал...
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38493501
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Нет вопросов - буду рад если данный код будет кому-то в помощь....
"ты готов сделать ее хендлер"
Если я верно Вас понял относительно обработчика
У меня это опознание метода SET и присвоение полю этого метода значения

Доп. вопрос - обработчики ЯВНОГО приведения типов можно как то оптимизировать
Имею в виду это ...
case "int":
itemEqual.getValue().invoke(anyObject,new Object[] {Integer.parseInt(lineData[itemEqual.getKey()])});
break;


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
	@ImportField(name="TYPE")
	public void setType(String type) {
		this.type = type;
	}

[/SRC JAVA]


[SRC JAVA]
package TimeSheet;

import java.io.File;

import org.hibernate.Session;

import java.io.FileNotFoundException;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;

import static java.lang.System.out;

public class ImportTextFile {

	@Inherited
	@Documented
	@Target(ElementType.METHOD)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface ImportField {
	   String name();
	   String format() default "";
	}

	private Session session;
	private String  fileName;
	private Class   anyClass;
	
	public ImportTextFile(Session session, Class anyClass,String fileName,boolean execute) {

		setSession(session);
		setAnyClass(anyClass);
		setFileName(fileName);
		if(execute){
			try{
				ExecuteImport();
			} catch(Exception except) {
				except.printStackTrace();
			}
		}
	}
	
	public void ExecuteImport() throws Exception {
		if(anyClass!=null && fileName!=null){
			Scanner scanFile = null;
			try{
				scanFile = new Scanner(new File(fileName));
				} catch (FileNotFoundException except) {
					except.printStackTrace();
				}
			if(scanFile.hasNext()){
				HashMap<String,String> listHead = new HashMap<String,String>();
				while(scanFile.hasNext()){
					String lineHead = scanFile.nextLine();
					if(lineHead.contains("[Data]")){break;}
					if(lineHead.split("=").length>1){listHead.put(lineHead.split("=")[0],lineHead.split("=")[1]);}
				}
				ArrayList<String> listTitle = new ArrayList(Arrays.asList(listHead.get("FieldList").split(listHead.get("FieldDelimiter"))));
				HashMap<Integer,Method> listEqual = new HashMap<Integer,Method>();
				Method[] listMethod = anyClass.getDeclaredMethods();
				for(Method itemMethod : listMethod){
					if(itemMethod.isAnnotationPresent(ImportField.class)){
						int i = listTitle.indexOf(itemMethod.getAnnotation(ImportField.class).name());
						if(i>-1 && itemMethod.getName().matches("set.*") && itemMethod.getParameterTypes().length==1){
							listEqual.put(i,itemMethod);
							}
						}
					}
				while(scanFile.hasNext()){
					String[] lineData = scanFile.nextLine().split(listHead.get("FieldDelimiter"));
					Object anyObject = anyClass.newInstance();
					for(Entry<Integer,Method> itemEqual : listEqual.entrySet()){
						switch(itemEqual.getValue().getParameterTypes()[0].getName()){
							case "int":
								itemEqual.getValue().invoke(anyObject,new Object[] {Integer.parseInt(lineData[itemEqual.getKey()])});
								break;
			    			case "java.lang.String":
			    				itemEqual.getValue().invoke(anyObject,new Object[] {lineData[itemEqual.getKey()]});
			    				break;
			    			case "java.util.Date":
			    				itemEqual.getValue().invoke(anyObject,new Object[] { new SimpleDateFormat(listHead.get("DateTimeFormat")).parse(lineData[itemEqual.getKey()]) });
			    				break;
						};
					}
					Method getMethod0=anyClass.getDeclaredMethod("getNaim");
					Method getMethod1=anyClass.getDeclaredMethod("getKind");
					Method getMethod2=anyClass.getDeclaredMethod("getTime");
					Method getMethod3=anyClass.getDeclaredMethod("getDay");
					out.format("%s %s %s %s %n ",getMethod0.invoke(anyObject).toString(),getMethod1.invoke(anyObject).toString(),getMethod2.invoke(anyObject).toString(),getMethod3.invoke(anyObject).toString());
					//Class anyClass = Class.forName(className);
					//setMethod = anyClass.getDeclaredMethod(itemEntry.getValue().getName(), new Class[] { String.class/Date.class/int });
					//session.saveOrUpdate(anyObject);
				}
			}
		}
	}
	
	public Session getSession() {
		return session;
	}

	public void setSession(Session session) {
		this.session = session;
	}

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public Class getAnyClass() {
		return anyClass;
	}

	public void setAnyClass(Class anyClass) {
		this.anyClass = anyClass;
	}
	
}
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38494080
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор обработчики ЯВНОГО приведения типов можно как то оптимизировать

Вряд ли. У меня оно так же работает для примитивов.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38494821
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiverдля примитивов.


В смысле "примитивов", а что есть другое решение ?
Подскажите пожалуйста
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38496030
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
for (Map.Entry<Class, String> entry : args.entrySet()) {
            switch (entry.getKey().toString()) {
                case "boolean"  : result.add(Boolean.parseBoolean(entry.getValue()));   break;
                case "long"     : result.add(Long.parseLong(entry.getValue()));         break;
                case "int"      : result.add(Integer.parseInt(entry.getValue()));       break;

                default         : result.add(getInstance(entry.getKey(), entry.getValue()));
            }
}

private static<T> T getInstance(Class<T> tClass, String value) throws Exception {
        return (T)tClass.getConstructor(String.class).newInstance(value);
}



Здесь правда только стринговский конструктор по дефолту, ну думаю переделать труда не составит, если понадобится.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38496060
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте TYPE и isAssignableFrom или ==
Код: java
1.
	Integer.TYPE;
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38496071
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
result.add(Object ..)

можно было как-то перегрузить.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38496126
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Да там не суть важно было.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38496340
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRivermayton,

Да там не суть важно было.

Но case все равно остаеться - т.е. момент ЯВНОГО приведения типа ?
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38497512
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Да. Ну это скорей уже не привидение, а инициализация какая-то.
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38498194
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DoSOfRedRiverHOME_X,


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
for (Map.Entry<Class, String> entry : args.entrySet()) {
            switch (entry.getKey().toString()) {
                case "boolean"  : result.add(Boolean.parseBoolean(entry.getValue()));   break;
                case "long"     : result.add(Long.parseLong(entry.getValue()));         break;
                case "int"      : result.add(Integer.parseInt(entry.getValue()));       break;

                default         : result.add(getInstance(entry.getKey(), entry.getValue()));
            }
}

private static<T> T getInstance(Class<T> tClass, String value) throws Exception {
        return (T)tClass.getConstructor(String.class).newInstance(value);
}



Здесь правда только стринговский конструктор по дефолту, ну думаю переделать труда не составит, если понадобится.

Тогда уж так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
import java.util.Map;
import static java.lang.Long.parseLong;
import static java.lang.Integer.parseInt;
import static java.lang.Boolean.parseBoolean;

public class StringLess {
    public static void parseStringsByClass(Map<Class, String> map, IResult result) throws Exception {
        for (Map.Entry<Class, String> entry : map.entrySet()) {
            Class key = entry.getKey();
            String value = entry.getValue();

            if (key.isPrimitive()) {
                if (boolean.class == key) {
                    result.add(parseBoolean(value));
                } else if (long.class == key) {
                    result.add(parseLong(value));
                } else if (int.class == key) {
                    result.add(parseInt(value));
                }
            } else {
                result.add(getInstance(key, value));
            }
        }
    }

    private static <T> T getInstance(Class<T> tClass, String value) throws Exception {
        return (T) tClass.getConstructor(String.class).newInstance(value);
    }
}


Код: java
1.
2.
3.
4.
5.
6.
public interface IResult {
    public void add(boolean b);
    public void add(int i);
    public void add(long l);
    public void add(Object o);
}
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38498225
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только примитивные типы здесь вообще не нужны..
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38498768
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Порефакторил маленько)

ImportTextFile.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
package timesheet;

import java.io.File;
import java.io.FileNotFoundException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.util.List;
import java.lang.reflect.Constructor;
import java.util.Date;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.hibernate.Session;

import static java.lang.System.out;
import static java.util.Arrays.asList;

public class ImportTextFile {

    private Session session;
    private String fileName;
    private Class anyClass;

    public ImportTextFile(Session session, Class anyClass, String fileName, boolean execute) throws Exception {
        setSession(session);
        setAnyClass(anyClass);
        setFileName(fileName);
        if (execute) {
            executeImport();
        }
    }

    public final void executeImport() throws FileNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, ParseException {
        if (anyClass == null || fileName == null) { return; }
        try (Scanner scanFile = new Scanner(new File(fileName))) {
            if (!scanFile.hasNext()) { return; }

            HashMap<String, String> listHead = new HashMap<>();

            while (scanFile.hasNext()) {
                String lineHead = scanFile.nextLine();
                if (lineHead.contains("[Data]")) {
                    break;
                }
                String[] splited = lineHead.split("=");
                if (splited.length > 1) {
                    listHead.put(splited[0], splited[1]);
                }
            }

            List<String> listTitle = asList(listHead.get("FieldList").split(listHead.get("FieldDelimiter")));
            HashMap<Integer, Method> listEqual = new HashMap<>();

            for (Method itemMethod : anyClass.getDeclaredMethods()) {
                if (itemMethod.isAnnotationPresent(ImportField.class)) {
                    int i = listTitle.indexOf(itemMethod.getAnnotation(ImportField.class).name());
                    if (i > -1 && itemMethod.getName().matches("set.*") && itemMethod.getParameterTypes().length == 1) {
                        listEqual.put(i, itemMethod);
                    }
                }
            }
            while (scanFile.hasNext()) {
                String[] lineData = scanFile.nextLine().split(listHead.get("FieldDelimiter"));
                Object instance = anyClass.newInstance();
                for (Entry<Integer, Method> itemEqual : listEqual.entrySet()) {
                    String string = lineData[itemEqual.getKey()];
                    Method method = itemEqual.getValue();
                    
                    Class firstParam = method.getParameterTypes()[0];
                    method.invoke(instance,
                            (firstParam != Date.class)
                            ? instantiate(firstParam, string)
                            : new SimpleDateFormat(listHead.get("DateTimeFormat")).parse(string));
                }

                Method //методы могут быть не публичными?
                        naim = anyClass.getDeclaredMethod("getNaim"),
                        kind = anyClass.getDeclaredMethod("getKind"),
                        time = anyClass.getDeclaredMethod("getTime"),
                        day  = anyClass.getDeclaredMethod("getDay");

                printlnSpaceSeparated(naim.invoke(instance), kind.invoke(instance), time.invoke(instance), day.invoke(instance));
                //Class anyClass = Class.forName(className);
                //setMethod = anyClass.getDeclaredMethod(itemEntry.getValue().getName(), new Class[] { String.class/Date.class/int });
                //session.saveOrUpdate(anyObject);
            }

        }
    }


    //<editor-fold defaultstate="collapsed" desc="instantiation">
    private static final Map<Class, Constructor> CONSTRUCTORS = initConstructors();
    private static Map<Class, Constructor> initConstructors() {
        Map<Class, Constructor> map = new HashMap<>();
        try {
            Constructor
                    booleanC = getConstructor(Boolean.class),
                    byteC    = getConstructor(Byte.class),
                    shortC   = getConstructor(Short.class),
                    integerC = getConstructor(Integer.class),
                    longC    = getConstructor(Long.class),
                    floatC   = getConstructor(Float.class),
                    doubleC  = getConstructor(Double.class);

            map.put(boolean.class, booleanC);
            map.put(Boolean.class, booleanC);
            map.put(byte.class, byteC);
            map.put(Byte.class, byteC);
            map.put(short.class, shortC);
            map.put(Short.class, shortC);
            map.put(int.class, integerC);
            map.put(Integer.class, integerC);
            map.put(long.class, longC);
            map.put(Long.class, longC);
            map.put(float.class, floatC);
            map.put(Float.class, floatC);
            map.put(double.class, doubleC);
            map.put(Double.class, doubleC);

            map.put(String.class, getConstructor(String.class));
        } catch (Exception ex) {
            Logger.getLogger(ImportTextFile.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
        return map;
    }

    private static <T> Constructor<T> getConstructor(Class<T> cls) throws NoSuchMethodException {
        return cls.getConstructor(String.class);
    }

    private static <T> T instantiate(Class<T> cls, String value) throws NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        Constructor<T> constructor = CONSTRUCTORS.get(cls);
        if (constructor == null) {
            CONSTRUCTORS.put(cls, constructor = getConstructor(cls));
        }
        return constructor.newInstance(value);
    }
    //</editor-fold>


    private static void printlnSpaceSeparated(Object... objects) {
        if (objects.length > 0) {
            out.print(objects[0]);
        }
        for (int i = 1; i < objects.length; ++i) {
            out.print(" ");
            out.print(objects[i]);
        }
        out.println();
    }

    public Session getSession() {
        return session;
    }

    public final void setSession(Session session) {
        this.session = session;
    }

    public String getFileName() {
        return fileName;
    }

    public final void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public Class getAnyClass() {
        return anyClass;
    }

    public final void setAnyClass(Class anyClass) {
        this.anyClass = anyClass;
    }
}

ImportField.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
package timesheet;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Inherited
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ImportField {

    String name();
    String format() default "";
}

...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38499268
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mk,

Чем это вам свич не нравится?
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38499364
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь господа !

Принцип понял - сигнатура конструктора вместо switch
Детали досматриваю - разбираю

Спасибо avp.mk за пример
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38499752
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DoSOfRedRiverЧем это вам свич не нравится?
Эстетически))
В данном случае больше не нравятся строки.

Код: java
1.
2.
3.
4.
5.
        boolean someValue = true;
        switch (Boolean.toString(someValue)) {
            case "true":  System.out.println("true");  break;
            case "false": System.out.println("false"); break;
        }
...
Рейтинг: 0 / 0
Пользовательская аннотация
    #38499873
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Код: java
1.
2.
map.put(boolean.class, booleanC);
map.put(Boolean.class, booleanC);



Насколько я понял, здесь и для примитивов и для враперов один и тот же конструктор используется. При инвоке методов с сигнатурой вроде
Код: java
1.
void setValue(boolean value);

оно может на приведении завалиться. Я потому и использовал конструкции вроде

Код: java
1.
case "boolean"  : result.add(Boolean.parseBoolean(entry.getValue()));   break;
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Пользовательская аннотация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]