Metaprogrammation et java

perso l’indentation syntaxique ca me fait peur. Tu peux passer a la ligne quand bon te semble, genre quand t’as des parametres assez longs ?

De plus en python il est interdit de mettre des commentaires.

ou pas.

@Berzekh oui, of course, tu peux.

Franchement, l’argument d’illisibilité, je trouve ça un peu fatiguant, c’est un langage sur lequel on peut discuter des heures (comme tous…),
Mais je dirais juste que c’est un des langages que j’ai pu apprendre le plus vite, et qu’avec l’expérience, je le trouve la syntaxe pratique et très lisible.

Oualou.

don’t feed the troll

À la base, le monsieur pose une question spécifique sur un problème de code, on n’est pas là pour engager un débat stérile (et puérile) sur “mon langage il roxx plus que le tien”. Si c’est pour poster autre chose qu’un élément de réponse, merci de vous abstenir.

Ça s’adresse particulièrement à ZGoblin, mais j’imagine que c’était inutile de le préciser.

/me range sa massue

Bubu, ca a répondu a tes questions mon code ou pas ?

[quote=“Berzehk, post:26, topic: 49606”]/me range sa massue

Bubu, ca a répondu a tes questions mon code ou pas ?[/quote]
ouais faudra je suis toujours en train de l’analyser a froid
merci
bussiere

Je suis tombé la dessus :
http://www.java2s.com/Tutorial/Java/0120__Development/CompileString.htm
mais j’ai un peu de mal a le comprendre

import java.lang.reflect.Method;
import java.net.URI;
import java.util.Iterator;
import java.util.NoSuchElementException;

import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.ToolProvider;

public class CompileString {
  public static void main(String[] args) throws Exception {
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    String program = "class Test{" + "   public static void main (String [] args){"
        + "      System.out.println (\"Hello, World\");"
        + "      System.out.println (args.length);" + "   }" + "}";

    Iterable<? extends JavaFileObject> fileObjects;
    fileObjects = getJavaSourceFromString(program);

    compiler.getTask(null, null, null, null, null, fileObjects).call();
// c'est la ou je suis paumé
    Class<?> clazz = Class.forName("Test");
    Method m = clazz.getMethod("main", new Class[] { String[].class });
    Object[] _args = new Object[] { new String[0] };
    m.invoke(null, _args);
  }

  static Iterable<JavaSourceFromString> getJavaSourceFromString(String code) {
    final JavaSourceFromString jsfs;
    jsfs = new JavaSourceFromString("code", code);
    return new Iterable<JavaSourceFromString>() {
      public Iterator<JavaSourceFromString> iterator() {
        return new Iterator<JavaSourceFromString>() {
          boolean isNext = true;

          public boolean hasNext() {
            return isNext;
          }

          public JavaSourceFromString next() {
            if (!isNext)
              throw new NoSuchElementException();
            isNext = false;
            return jsfs;
          }

          public void remove() {
            throw new UnsupportedOperationException();
          }
        };
      }
    };
  }
}

class JavaSourceFromString extends SimpleJavaFileObject {
  final String code;

  JavaSourceFromString(String name, String code) {
    super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
    this.code = code;
  }

  public CharSequence getCharContent(boolean ignoreEncodingErrors) {
    return code;
  }
}

Bussiere

La j’ai pas le temps, je regarde ça demain afin d’apporter un élément de réponse (et de ne pas me faire tapper par Faskil car il faut prendre ses menaces au sérieux même celles qui date de plus d’un an ! )

[Edit]

J’ai fais quelques tests mais rien de concluant (ça marche pô). désolé de ne pas pouvoir t’aider