someVector.size() == 0?



  • Ich seh' mal wieder den Fehler nicht. Ich habe eine Klasse ContentColumn, die als Element einen Vector aus Objekten der Klasse Content hat. Außerdem definiert sie drei Methoden:

    public class ContentColumn
    {
        private Vector<Content> contentVector = new Vector<Content>();
    
        public void addContent(String _fileName)
        {
            contentVector.add(new Content(_fileName));
        }
    
    public int getContentCount()
        {
            return contentVector.size();
        }
    
        public void loadContent(pdflib _pdflib)
        {
            try
            {
                if(getContentCount() == 0)
                {
                    throw new Exception("No content defined for content column.");
                }
    }}
    }
    

    In Paper, der Klasse, die die main-Methode enthält, ist nun ein Objekt der Klasse ContentColumn definiert:

    private static ContentColumn middleColumn = new ContentColumn();
    

    In der main-Methode wird dann folgende Methode derselben Klasse aufgerufen:

    public static void configureAreas()
        {
            // middle column
            middleColumn.addContent("content1.txt");
            middleColumn.addContent("content2.txt");
            middleColumn.addContent("content3.txt");
            middleColumn.addContent("content4.txt");
        }
    

    Anschließend wird die oben gezeigte Methode loadContent der Klasse ContentColumn aufgerufen.

    Was mich überrascht ist nun, dass die oben gezeigte Exception in der Methode geworfen wird, obwohl ich ja vier Content Objekte erzeugt habe... wo steckt der Wurm?



  • Hi

    Ich glaube, da fehlt noch etwas Code, um das Problem vollständig zu erkennen. Wann wird denn die Methode loadContent aufgerufen? Kann es sein, dass das passiert ehe du die Elemente hinzufügst?



  • Hallo DarkGuardian,
    danke für deine Antwort.

    Wie beschrieben wird zunächst die Methode configureAreas der Klasse Paper aufgerufen, die die Elemente hinzufügt. Anschließend wird die Method loadContent der Klasse ContentColumn aufgerufen.



  • ein bischen mehr code wäre echt nicht schlecht oder wenigstens ein paar infos. alternativ würde ich an deiner stelle mal probieren den debugger zu nutzen und dann folgendes verifizieren:

    - ist in contentVector wirklich was drin?
    - was gibt die getMethode zurück?

    ein bischen sorgen macht mir das "=="



  • Argh! Ich hatte total übersehen, dass ich zusätzlich zu middleColumn auch noch ein Objekt rightColumn erzeugt hatte, das ich nicht mit Werten gefüttert habe (mittels addContent-Methode).

    Deswegen der Fehler!

    Vielen Dank für Eure Hilfe!



  • Brauchst du unbedingt einen Vector? Aus http://java.sun.com/javase/6/docs/api/java/util/Vector.html

    As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized.

    Wenn du also keine Thread-Save Collection brauchst, solltest du ArrayList verwenden. Beim Vector wird unnoetigerwise staendig ein Lock benutzt, wenn du etwas hinzufuegst/entfernst/usw.


Anmelden zum Antworten