Type safety

Status
Nicht offen für weitere Antworten.
S

schmek

Gast
Hallo

Bekomme eine Warnung und hab keine Ahnung was ich ändern müsste:

Programmzeile:
structure.addExpression(structure.getStructureFactory().createMult(structure.get(left),structure.get(right)));

Warnung:
Type safety: The method createMult(Expression, Expression) belongs to the raw type AbstractStructureFactory. References to generic type AbstractStructureFactory<T> should be parameterized.

Danke für die Hilfe.
Willi
 

Leroy42

Top Contributor
Das bedeutet, daß AbstractStructureFactory verschiedene Typen verwalten kann
und du den Java-Compiler 1.5 benutzt.

Es geht darum, daß du seit Java 1.5, beispielsweise Collection-Klassen typkonform
benutzen kannst.

< Java 1.5 : Vector myVec = new Vector() speichert alle möglichen Objekte
>= Java 1.5 : Vector<String> myVec = new Vector<String> wacht darüber nur Strings zu speichern.

Wenn du zu verwendenden Typ kennst (symbolisch T genannt), gib ihn bei der Deklaration an,
ansonsten nutze Object um den Compiler zu beruhigen.

Code:
AbstractStructureFactory<MeinTyp> wasAuchImmerIchBin = new AbstractStructureFactory<MeinTyp>;
Code:
AbstractStructureFactory<Object> wasAuchImmerIchBin = new AbstractStructureFactory<Object>;
 
S

schmek

Gast
Also das ist das komplette Programm. Da die AbstractStructureFactory abstract ist, werden nicht direkt Typen angelegt, sondern abgeleitete Typen angelegt:



Code:
package algebraicStructuresFactory;

import algebraicStructures.Expression;
import inout.In;
import inout.Out;

public class AlgebraicStructureTest {

	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		AbstractStructureFactory structureFactory;
		int decide,index,left,right;
		String constant;
		Out.print("Decide on ring system:" +
				"\n[1] for Bool" +
				"\n[2] for Modulo 5" +
				"\nYour selection: ");
		decide = In.readInt();
		switch(decide){
		case 1: 
			structureFactory = new BoolStructureFactory();
			break;
		case 2:
			structureFactory = new Z5StructureFactory();
			break;
		default:
			Out.println("invalid input");
			return;
		}
		AlgebraicStructure structure = new AlgebraicStructure(structureFactory);
		
		do{
			Out.print("\nCommands are:" +
					"\n[1] - for new constant" +
					"\n[2] - for evaluate" +
					"\n[3] - for multiplication expression" +
					"\n[4] - for plus expression" +
					"\n[5] - for quit" +
					"\nSelect your command:");
			decide = In.readInt();
			if(decide == 1){
				Out.print("  Constant: ");
				constant = In.readWord();
				#structure.addExpression(structure.getStructureFactory().createConst(constant));

			}
			if(decide == 2){
				Out.print("  Index: ");
				index = In.readInt();
				#structure.addExpression(structure.get(index).evaluate());
			}
			if(decide == 3){
				Out.print("Index left operand: ");
				left = In.readInt();
				Out.print("Index right operand: ");
				right = In.readInt();
				#structure.addExpression(structure.getStructureFactory().createMult(structure.get(left),structure.get(right)));
			}
			if(decide == 4){
				Out.print("Index left operand: ");
				left = In.readInt();
				Out.print("Index right operand: ");
				right = In.readInt();
				#structure.addExpression(structure.getStructureFactory().createPlus(structure.get(left),structure.get(right)));
			}
			if (decide != 5){
				#Out.println("[" + (structure.size()-1) + "] " + structure.get(structure.size()-1));
			}
		}while(decide != 5);
	}
}

[\code]

Hab leider keine Ahnung was ich bei den Objekten anders schreiben müsste um keine Fehlermeldungen (Zeile mit Asterix #) zu bekommen.[code]
Code:
 
S

schmek

Gast
Also das ist das komplette Programm. Da die AbstractStructureFactory abstract ist, werden nicht direkt Typen angelegt, sondern abgeleitete Typen angelegt:

Code:
package algebraicStructuresFactory;

import algebraicStructures.Expression;
import inout.In;
import inout.Out;

public class AlgebraicStructureTest {

	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		AbstractStructureFactory structureFactory;
		int decide,index,left,right;
		String constant;
		Out.print("Decide on ring system:" +
				"\n[1] for Bool" +
				"\n[2] for Modulo 5" +
				"\nYour selection: ");
		decide = In.readInt();
		switch(decide){
		case 1: 
			structureFactory = new BoolStructureFactory();
			break;
		case 2:
			structureFactory = new Z5StructureFactory();
			break;
		default:
			Out.println("invalid input");
			return;
		}
		AlgebraicStructure structure = new AlgebraicStructure(structureFactory);
		
		do{
			Out.print("\nCommands are:" +
					"\n[1] - for new constant" +
					"\n[2] - for evaluate" +
					"\n[3] - for multiplication expression" +
					"\n[4] - for plus expression" +
					"\n[5] - for quit" +
					"\nSelect your command:");
			decide = In.readInt();
			if(decide == 1){
				Out.print("  Constant: ");
				constant = In.readWord();
				structure.addExpression(structure.getStructureFactory().createConst(constant));

			}
			if(decide == 2){
				Out.print("  Index: ");
				index = In.readInt();
				structure.addExpression(structure.get(index).evaluate());
			}
			if(decide == 3){
				Out.print("Index left operand: ");
				left = In.readInt();
				Out.print("Index right operand: ");
				right = In.readInt();
				structure.addExpression(structure.getStructureFactory().createMult(structure.get(left),structure.get(right)));
			}
			if(decide == 4){
				Out.print("Index left operand: ");
				left = In.readInt();
				Out.print("Index right operand: ");
				right = In.readInt();
				structure.addExpression(structure.getStructureFactory().createPlus(structure.get(left),structure.get(right)));
			}
			if (decide != 5){
				Out.println("[" + (structure.size()-1) + "] " + structure.get(structure.size()-1));
			}
		}while(decide != 5);
	}
}
 

Leroy42

Top Contributor
Da ich keinen Schimmer habe, was AlgebraicStructureTest sein soll, ein
einfacher Vorschlag: Ignorier die Fehlermeldung (vorerst) noch.

Oder versuch mal mit "javac -source 1.4 Blubber.java"
 

Han

Bekanntes Mitglied
Hallo...falls dich beruhigt...mit genau demselben Problem hab ich auch zu kämpfen (mach dieselber Aufgabe)...bei mir sind aber leider noch mehr Warnungen vorhanden wegen der Typsicherheit...wie hast du das mit der Expressionliste gelöst? Die muss man doch auch einbauen und kann aber leider den Platzhaltertyp bei Expression nicht genau bestimmen zu Beginn...also kommts auch zu TypeSafetys....

mfg.
Hannes
 
B

Beni

Gast
Lest euch dieses Dokument durch, das sollte die meisten Fragen bezüglich Generics beantworten :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
T Compiler-Fehler Null type safety (type annotations) Java Basics - Anfänger-Themen 5
C Warning: Type safety: Potential heap pollution via varargs parameter array Java Basics - Anfänger-Themen 5
A Variablen Type safety Warnung beseitigen Java Basics - Anfänger-Themen 3
lumo lösen von: "Type safety"? Java Basics - Anfänger-Themen 4
S type safety, conversions Java Basics - Anfänger-Themen 6
S Type safety bei einer ArrayList Java Basics - Anfänger-Themen 2
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
M Umgang mit dem Type "Date" Java Basics - Anfänger-Themen 6
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
nbergmann The type JOptionPane is not accessible. Java Basics - Anfänger-Themen 4
M Type Erasure in Java Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Flo :3 Variablen Type dismatch: cannot convert from string to int Java Basics - Anfänger-Themen 9
P Jackson mapper.readValue mit generischem Type Java Basics - Anfänger-Themen 10
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
D Klassen undefined for the type 'object' Java Basics - Anfänger-Themen 2
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
K VerketteteListen unexpected type Fehler Java Basics - Anfänger-Themen 2
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
V RMI - argument type mismatch Java Basics - Anfänger-Themen 1
S Selection does not contain a main type! Java Basics - Anfänger-Themen 5
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
M "illegal start of type" eindimensionales Schiffe versenken Java Basics - Anfänger-Themen 7
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
S Selection does not contain a main type Java Basics - Anfänger-Themen 12
H enum Type Java Basics - Anfänger-Themen 6
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
I Erste Schritte Eclipse - Does not contain a main type Java Basics - Anfänger-Themen 8
W Enum Konstruktor Type Java Basics - Anfänger-Themen 2
C MIME-Type null Java Basics - Anfänger-Themen 4
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
G default class type Java Basics - Anfänger-Themen 3
J Type inference Java Basics - Anfänger-Themen 26
Joew0815 Compiler-Fehler Unexpected Type - Problem mit Variablen rechnen Java Basics - Anfänger-Themen 7
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
O unexpected type - weiß nicht weiter! Java Basics - Anfänger-Themen 3
M Datentypen problem!! Unexpected type in bleuj Java Basics - Anfänger-Themen 2
P Compiler-Fehler unexpected type - Stehe auf dem Schlauch Java Basics - Anfänger-Themen 3
M This method must return a result of type int Java Basics - Anfänger-Themen 13
T Unhandled exception type Java Basics - Anfänger-Themen 2
J unexpected type variable/value Java Basics - Anfänger-Themen 2
M Collections mit >2 type Parametern? Java Basics - Anfänger-Themen 8
D Compiler-Fehler void is an invalid type for the variable Java Basics - Anfänger-Themen 5
H LocationReferenceImpl cannot be resolved to a type Java Basics - Anfänger-Themen 5
K unexpected type variable/value Java Basics - Anfänger-Themen 7
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
K Erste Schritte selection does not contain a main type Java Basics - Anfänger-Themen 3
M Objekt Cannot instantiate the type ... Java Basics - Anfänger-Themen 10
S this method must return a result of type double Java Basics - Anfänger-Themen 2
L Type/Cast Problem Java Basics - Anfänger-Themen 6
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
B Editor does not contain a main type Java Basics - Anfänger-Themen 3
E Datentypen type cast problem (int, byte,) Java Basics - Anfänger-Themen 5
L Illegal Start of Type, wie finde ich den fehler Java Basics - Anfänger-Themen 4
V Eclipse "Selection does not contain a main type" Java Basics - Anfänger-Themen 13
P BlueJ Fehlermeldung - Illegal Start of Type Java Basics - Anfänger-Themen 8
J Color cannot be resolved to a type Java Basics - Anfänger-Themen 4
B Undefined for the type... Java Basics - Anfänger-Themen 15
D Unhandled Exception type IOException in Constructor Java Basics - Anfänger-Themen 1
B Selection does not contain a main type Java Basics - Anfänger-Themen 2
A The method getYear() from the type Date is deprecated Java Basics - Anfänger-Themen 6
B Type von Class erhalten Java Basics - Anfänger-Themen 2
G incompatibel return type bei vererbung Java Basics - Anfänger-Themen 18
J String cannot be resolved to a type Java Basics - Anfänger-Themen 6
C Editor does not contain a main type Java Basics - Anfänger-Themen 7
J Type-Casting Java Basics - Anfänger-Themen 8
M 'void' type not allowed Java Basics - Anfänger-Themen 18
B method intValue() is undefined for the type String (?) Java Basics - Anfänger-Themen 4
H wieso fehler ? must return a type of int. Java Basics - Anfänger-Themen 4
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
G raw type Java Basics - Anfänger-Themen 2
N Java Sound - Unsupported control type Java Basics - Anfänger-Themen 2
J System.in.read(): Unhandled exception type IOException Java Basics - Anfänger-Themen 12
S falscher return type ? Java Basics - Anfänger-Themen 4
F The type . is ambiguous Java Basics - Anfänger-Themen 2
A Generics Raw Type Java Basics - Anfänger-Themen 9
G Kein main Type? Java Basics - Anfänger-Themen 3
N invalid method declaration; return type required Java Basics - Anfänger-Themen 4
S StringToInt() - Type mismatch: cannot convert from... Java Basics - Anfänger-Themen 16
R Eclipse: This method must return a result of type double. Java Basics - Anfänger-Themen 2
M Fehlermeldung (the method add(OE) in the type Abteilung.) Java Basics - Anfänger-Themen 2
O must be an array type (String array füllen) Java Basics - Anfänger-Themen 7
M method xxx() from the type xxx is deprecated Java Basics - Anfänger-Themen 3
G typeof is undefined for the type "Klassenname" Java Basics - Anfänger-Themen 8
A The method getClass() from the type saveLog is not static Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben