Analyseergebnis unverständlich

Status
Nicht offen für weitere Antworten.

GilbertGrape

Bekanntes Mitglied
Hallo,

ich hab mir jetzt das Analyse-Tool PMD als Plugin in Eclipse installiert.
Ich hab hier mal eine Beispielklasse von mir:

Code:
package com.id.pharma.textedits.app.persist;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table
public class Paragraph {

	Long id;
	String text;
	List<DetailText> detailTexts;
	Category defaultCategory;

	public Paragraph() {

	}

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Lob
	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}	
	
	@OneToMany(mappedBy="paragraph", cascade= CascadeType.ALL, fetch=FetchType.EAGER)
	@JoinColumn(name="paragraph")
	public List<DetailText> getDetailTexts() {
		if(detailTexts == null){
			detailTexts = new ArrayList<DetailText>();
		}
		return detailTexts;
	}

	public void setDetailTexts(List<DetailText> detailTexts) {
		this.detailTexts = detailTexts;
	}

	@ManyToOne
	@JoinColumn(name="defaultCategory")
	public Category getDefaultCategory() {
		return defaultCategory;
	}

	public void setDefaultCategory(Category category) {
		this.defaultCategory = category;
	}
	

}

Er sagt mir jetzt zu allen Imports außer Entity und Table:
Avoid unused imports such as 'javax.persistence.Id'

Warum? Ich brauch die doch eindeutig und Eclipse macht sie ja auch nicht weg bei "organize Imports"

Und warum muss eine abstrakte Klasse unbedingt einen Konstruktor haben? (das gehört jetzt nicht zu dieser Klasse)
 

Wildcard

Top Contributor
Wo verwendest du javax.persistence.Id ?
Eine Abstrakte Klasse muss nur dann einen Konstruktor haben, wenn die Super-Klasse keinen Parameterlosen Konstruktor hat (wie soll sonst die Super-Klasse initialisiert werden?)
 

tfa

Top Contributor
Offensichtlich kommt PMD nicht so gut mit Annotationen zurecht. Jedenfalls wenn sie an Methoden hängen. Wahrscheinlich ein Bug.
 

GilbertGrape

Bekanntes Mitglied
tfa hat gesagt.:
Offensichtlich kommt PMD nicht so gut mit Annotationen zurecht. Jedenfalls wenn sie an Methoden hängen. Wahrscheinlich ein Bug.

Und mit List auch nicht?

hm, komisches tool

@Wildcard: Und was wenn ich die abstrakte Klasse gar nicht initialisieren will, also nur die abgeleiteten?
 

Wildcard

Top Contributor
Du kannst aus einer abstrakten Klasse sowieso kein Objekt erzeugen, aber die Hierarchie muss konsistent sein, die Kindklasse muss die Felder der Elterklasse ordentlich initialisieren und das geht über den Konstruktor.
 
M

maki

Gast
>> Und was wenn ich die abstrakte Klasse gar nicht initialisieren will, also nur die abgeleiteten?

Bin zwar nicht Wildcard, aber: Das geht doch nicht ;)
 

GilbertGrape

Bekanntes Mitglied
Warum nicht?
Ich hab eine abstrakte Klasse mit einigen Funktionen, die alle Kinderklassen gemeinsam haben und noch ein paar abstrakte Methoden, die dann überschrieben werden sollten.
Ich brauch aber dann nur Objekte der Kinderklassen.
 

GilbertGrape

Bekanntes Mitglied
Wildcard hat gesagt.:
Du kannst aus einer abstrakten Klasse sowieso kein Objekt erzeugen, aber die Hierarchie muss konsistent sein, die Kindklasse muss die Felder der Elterklasse ordentlich initialisieren und das geht über den Konstruktor.
Ah ok!
 

tfa

Top Contributor
Weiß ich nicht. Bei mir läuft Findbugs nicht im Eclipse. Das frisst viel zu viele Ressourcen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben