J'essaie d'obtenir un véritable équivalent pour Java's Code> Final Static de Java Code> dans Scala pour utiliser Twip .
Création d'un Voici un exemple de classe Java que j'essaie de porter à SCALA: P> Val code> dans un objet code> ne fonctionne pas pour moi, car il fait partie d'une nouvelle classe générée Exemple $ .Class code> et Twip ne peut pas y accéder à partir de la classe exemple.class code>. P> net.sf.twip.internal.TwipConfigurationError:
there is no method or field 'MY_STRINGS' named in the @Values annotation of Parameter#1
4 Réponses :
Si vous utilisez un var, vous pouvez créer votre propre getter et Setter, et si la valeur est déjà définie, ne le modifiez pas. P>
Ce n'est peut-être pas la meilleure approche, mais il serait utile que vous puissiez expliquer pourquoi vous voulez utiliser final publicitaire statique code> sur une variable, comme une solution meilleure pourrait être plus évidente que. < / p>
Hallo James, merci pour votre commentaire. J'essaie de faire ce qui suit à Scala: String Static Final String [] My_strings = {"A", "B", "C"}; @Test Public Void MyTest (@values ("My_Strings") String String) {...} Twip.sourceforge .NET / HOWTO.HTML Mais je ne sais pas comment porter la finale publique statique à Scala. Si c'est un Val dans un objet, je reçois seulement ce qui suit: net.sf.twip.internal.twipconfigurationError: il n'y a pas de méthode ni de champ 'mystrings' nommé dans l'annotation @Values du paramètre n ° 1
@Renfis - Vous voudrez peut-être mettre ces informations dans votre question, formatée correctement, pour faciliter la lecture.
C'est super. Vous voudrez peut-être publier votre solution au cas où quelqu'un se bloque.
object Foo{
val MY_STRINGS=Array("A","B","C")
}
class Foo{
import Foo.MY_STRINGS
}
The val definition in the companion object creates your public static final variable, and the import declaration gives it a nice easy alias in the code you're using to write the class.Note that the public static final variable in Scala still will compile to look like a static method call if you call this code from Java.Edit: I'm slightly wrong because of a bug in Scala 2.7, which I demonstrate in detail in another answer.
Merci pour la Tipp. Je l'ai essayé et j'ai ajouté ma question. Mais ça ne marche pas pour moi. :(
En effet, SCALA n'expose pas une variable comme une variable - elle l'expose comme une méthode. Vous devez trouver une version de l'annotation @Values qui appelle une méthode et utilise les valeurs renvoyées par la méthode.
Vous voulez dire, la version actuelle de TWIP ne fonctionnera pas avec Scala? C'est dommage.
Je vais donner une nouvelle réponse à cette question, mais cela ressemble à ceci est Lampsvn .epfl.ch / trac / scala / ticket / 1735 , et est fixé dans SCALA 2.8 instantanés.
Le code SCALA suivant:
public class Foo extends java.lang.Object implements scala.ScalaObject{
public Foo();
public int $tag() throws java.rmi.RemoteException;
}
public final class Foo$ extends java.lang.Object implements scala.ScalaObject{
public static final Foo$ MODULE$;
public static {};
public Foo$();
public java.lang.String[] MY_STRINGS();
public int $tag() throws java.rmi.RemoteException;
}
Vous devez simplement définir la variable comme "Val" dans un objet compagnon. Remarque: Les variables statiques finales de Scala ne suivent pas la même convention qu'en Java. Jeter un coup d'œil à:
http://docs.scala-lang.org/style/naming-conventions. HTML P> P>
Twip = Twip.sourceforge.net ?
Si oui, peut-être code.google.com/p/scalacheck est plus approprié?
Oui, c'est ce twip. Je vais vérifier Scalacheck. Merci pour le lien.