Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > По названию обьекта определить класс...


Автор: PashaOvechkin 11.9.2008, 12:35
Пример класса виде ниже.
Техт данного класса хранится в JТextArea.

знаем название обьекта класса, например в данном классе ето -> myString .

Существует ли либа которая помогла бы узнать инстанцией какого класса явяется етот обьект??

(в примере ето String)

в идеале, имеем доступ ко всему проекту - но ето тогда будет о4ень сложно

Но можно локализовать задачу, и действовать в пределах одного класса.
Кто нить делал что то подобное?

Спасибо!

Код


public class ArrayDemo {

    private String myString = "";
    public static void main(String[] args) {
    int[] anArray;            // DECLARE an array of integers

    anArray = new int[10];    // CREATE an array of integers

    // assign a value to each array element 
    for (int i = 0; i < anArray.length; i++) {
        anArray[i] = i;
        }

    // print a value from each array element
    for (int i = 0; i < anArray.length; i++) {
        System.out.print(anArray[i] + " ");
    }

        myString  = myString.trim();


    System.out.println();
    }
}





Спасибо!

Автор: ivg 11.9.2008, 13:26
Еще раз уточните, у вас есть код класса (в виде текста), который хранится в переменной типа String и вам нужно получить экземпляр этого класса (в виде объекта класса Class<?>) в рантайме. Я правильно понимаю?

Автор: PashaOvechkin 11.9.2008, 15:17
Нет, нет...

Добавлено через 9 минут и 15 секунд
Есть код ява класа в виде стринга. В етом класе есть множество атрибутов и локальных переменных методов.
Выбираем любой например атрибут класса, который является инстансом любого другово класса (или возможно етого же).

Так вот задача как раз и состоит в том, что бы по названию инстанса класса определить его instanceof XXXXXX

Надеюсь доступно обяснил... Ето нужно для autoComplete.

Ведь в любой ИДЕ autoComplete работает именно так.

Автор: PashaOvechkin 11.9.2008, 15:33
на выше приведённом примере ето : 

есть текст класса ArrayDemo в стринге. И нам нужно определить обьектом какого класса является myString.
в етом примере всё просто. Но мы же знаем что ситуацию можно оочень сильно усложнить ... smile

Автор: BegemotX2 15.9.2008, 16:35
если я правильно Вас понял, то вам необходимо синтаксически разобрать ваш код (построить по нему Syntax Tree).
После этого проанализировать этот syntax tree, понять, где импорты, объявления класса, методов, полей итд. 

Проанализировать импорты, найти описание переменной myString, найти полученный тип в импортах и, далее -  Class.forName )

Задача не из тех, что можно быстро решить. Я когда-то делал что-то подобное. В качестве основы использовал парсер от BeanShell, хотя есть более общая тулза, зовется JavaCC.

Кстати, желаю удачи в определении типа выражения в конце строчки типа
Код

  ((Byte)myString.getBytes()[0]).getClass().toString()

Автор: Maksym 15.9.2008, 16:51
PashaOvechkin
Чисто на уровне идеи... если я правильно понял пробему... А что нельзя десериализировать это строчное представление в класс типа Оbject, а уже после этого взять у него getClass()...?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)