Положить конкретную переменную в generic тип

198
11 мая 2019, 12:00

Происходит считывание с текстовика классов Node1(2/3), наследников абстрактного Node с полем T object представляющих Root/Parent/Child дерева. По условию задачи типов может быть только 3:

В качестве значения object могут выступать: cтрока, 32-битное знаковое целочисленное число, 64-битное число с плавающей точкой.

Пока вижу одно решение, но как мне кажется не очень красивое: прям-как-тут через getGenericSuperclass

  • Вторая мысль это передавать Node1/2/3 через параметры метода и выполнять Node1.object = int; (=string/=double), однако делать прям как в этой строке, очевидно, нельзя. Ругается что Required: T / Found: int

Собственно, вопрос. Как мне считать с файла нужный тип и задать Node1/2/3 поле T object?

Скорее всего что-то не замечаю, или не хватает опыта работы с generics

public static <T> T getValueFromString(String input)    
{
    String value = input.substring(input.indexOf("(") + 1, input.indexOf(")")); // остальная часть input дает понять Node1 Node2 или Node3 сейчас считывается
    int valueInt;
    double valueDouble;
    String valueString;
    try (Scanner scanner = new Scanner(input)) {
        if (scanner.hasNextInt()) // если строка - int число
            return scanner.nextInt();
        else
            if (scanner.hasNextDouble())  // если строка - double число
                return scanner.nextDouble();
            else
                return value; // если строка - текст
    }
}
Answer 1

Ошибка в понимании generic-ов. Generic - это не любой тип, какой ты туда пошлешь. В рантайме все типы generic-a уже должны быть известны. Я бы, на твоем месте заюзал factory, которая в зависимости от типа создавала бы правильный объект и сетила в него значение

READ ALSO
Failed to load resource: the server responded with a status of 400 () Ошибка при возврате json объекта со scope session

Failed to load resource: the server responded with a status of 400 () Ошибка при возврате json объекта со scope session

Это делаю в первый раз, так что скорее всего явно где-то ошибсяПомогите пожалуйста

187
java.lang.LinkageError

java.lang.LinkageError

Подскажите пожалуйста кто сталкивался такой ошибкой в чем может быть проблема?

226
наложение полоски на фотo CSS [закрыт]

наложение полоски на фотo CSS [закрыт]

Помогите наложить полоску на фото, но так чтобы справа полоска обрезала фото

174
Как сделать чтобы работал Ecmascript 6 import, export?

Как сделать чтобы работал Ecmascript 6 import, export?

В браузер где использую скрипт с import export операторами выводит ошибку

207