Ich versuche Scala zu lernen, also habe ich beschlossen, Datenstrukturen damit zu implementieren. Ich habe mit dem Stack begonnen. Ich habe die folgende Stapelklasse erstellt.Versuch, eine Scala erstellte Klasse in Java zu initialisieren
class Stack[A : Manifest]() {
var length:Int = -1
var data = new Array[A](100)
/**
* Returns the size of the Stack.
* @return the size of the stack
*/
def size = {length}
/**
* Returns the top element of the Stack without
* removing it.
* @return Stacks top element (not removed)
*/
def peek[A] = {data(length)}
/**
* Informs the developer if the Stack is empty.
* @return returns true if it is empty else false.
*/
def isEmpty = {if(length==0)true else false}
/**
* Pushes the specified element onto the Stack.
* @param The element to be pushed onto the Stack
*/
def push(i: A){
if(length+1 == data.size) reSize
length+=1
data(length) = i;
}
/**
* Pops the top element off of the Stack.
* @return the pop'd element.
*/
def pop[A] = {
length-=1
data(length)
}
/**
* Increases the size of the Stack by 100 indexes.
*/
private def reSize{
val oldData = data;
data = new Array[A](length+101)
for(i<-0 until length)data(i)=oldData(i)
}
}
Ich versuche dann, diese Klasse in meiner Java-Klasse zu initialisieren, mit den folgenden
Stack<Integer> stack = new Stack<Integer>();
Aber ich habe gehört, dass der Konstruktor nicht existiert und dass ich ein Argument hinzufügen Übereinstimmen Manifest. Warum passiert das und wie kann ich das beheben?
+1 für die Erklärung, aber es ist möglich, 'Manifest' ohne Compiler Magie zu erstellen. Siehe meine Antwort. – paradigmatic