hoda_nikpour Ответов: 1

Понимание кода java xode


Я новичок в программировании на Java. Мне нужно понять и использовать уже написанную программу. Программа пытается создать модель с узлами и назначает разные ребра каждому узлу. Но у меня есть проблемы с пониманием некоторых частей кода. может ли кто-нибудь помочь мне понять, как работает следующая часть?
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Vector;
import java.io.*;

public class Model implements Serializable{
    public String name = "NoName";
    transient DomainClassLoader classLoader = null;
    Hashtable conceptIndex = new Hashtable();
    private Hashtable classDescriptors = new Hashtable();
    private boolean autoUpdateTransferRule = false;
    Hashtable domainClasses = new Hashtable();
    public Model(){
        try{
            new EClassDescriptor(this, this.getClass());           //statement 1
            new EClassDescriptor(this, Class.forName("rpr.Cnp"));  //statement 2
            RClassDescriptor rRCD = new RClassDescriptor(this, Class.forName("rpr.R"));
            new RClassDescriptor(this, Class.forName("rpr.HasInverse"));
            new RClassDescriptor(this, Class.forName("rpr.Sbf"));
            new Sbf(rRCD.getInverseDescriptor(), rRCD);
        } catch(CAlreadyExistException e) {
            e.printStackTrace();
        }
        catch(ClassNotFoundException e2) { 
            e2.printStackTrace();
        }
        Enumeration classes = classDescriptors.elements();
        while(classes.hasMoreElements())
            ((ClassDescriptor) classes.nextElement()).initMetaR();
        RClassDescriptor r = getRClassDescriptor(R.class);
        autoUpdateTransferRule = true;
    }
}


Как работает Утверждение 1 (строка 17) или утверждение 2 (строка 18)?
Как строки оператор 1, оператор 2, ... связаны с хэш-таблицей?

Что я уже пробовал:

Я искал похожие коды, но не смог найти много.

1 Ответов

Рейтинг:
10

Afzaal Ahmad Zeeshan

Вы не понимаете код по многим причинам:

1. Он имеет некоторые дополнительные темы — Class введите текст на Java. Классы в Java проще понять, но понимание класса или подобных ему требует некоторого понимания того, что такое отражение, для чего оно используется, по крайней мере, требуется базовое ноу-хау отражения в Java API.
2. сам класс не показан — по крайней мере нам.

То, что делает этот код, довольно просто: он создает новый объект типа EClassDescriptor, но этот объект затем использует текущий объект (модель), а также тип, который вы передаете. В строке 17 указывается тип класса для модели, а в следующей строке строится новый тип с заданным именем-класс Cnp в пакете rpr. Тем не менее, все эти концепции довольно сложны с точки зрения начинающих, поэтому я бы рекомендовал вам либо перечитывать предыдущий контент (где вы нашли этот код), либо получить хорошую книгу на эти темы.

Чтобы понять больше об этом, пожалуйста, прочтите следующие руководства ПО Oracle docs,
Использование ключевого слова this (учебные пособия Java™ > изучение языка Java & gt; классы и объекты)[^]
Класс (Java Platform SE 7 )[^]

Примечание: Также код написан плохо, объекты создаются и никакой дескриптор к ним не используется. Почему же тогда их создали в первую очередь.