Zum Inhalt springen

geloescht_Newlukai

Mitglieder
  • Gesamte Inhalte

    451
  • Benutzer seit

  • Letzter Besuch

Beiträge von geloescht_Newlukai

  1. (nur class datein und eine .conf datei)

    Ich glaube nicht, daß das geht. Da es recht sinnfrei ist, Kompilate zu kompilieren (und kompilieren ist der Zweck von <javac>), wirst Du Dein Vorhaben so wohl nicht umsetzen können.

    Und ich glaube weiterhin nicht, daß die "Vergewaltigung" (sorry ;)), die Du vorhast, funktionieren kann. GCJ setzt Bytecode in nativen Code um. Woher soll GCJ ahnen, daß Du in einer .conf-Datei Starteinstellungen vorliegen hast, die Du gerne übernommen hättest?

    Es mag sein, daß irgendwie das alles schon gehen mag. Ich habe aber keine Ahnung, wie das funktionieren soll. Daher kann ich nur zwei Dinge vorschlagen: Entweder Du übernimmst die Standardeinstellungen in den Code oder Du lieferst die Datei notgedrungen mit.

  2. Ach so. Hmm. Und gcj akzeptiert .jar-Dateien? Sind da .class- oder .java-Dateien enthalten?

    Mir fallen da nur zwei Möglichkeiten ein: Entweder Du nutzt das nested tag "src", was wahrscheinlich aber auch nicht mit einer .jar funktioniert. Oder Du entpackst das .jar vorher.

  3. Es wird wohl kaum funktionieren, die Daten eines Objektes auszulesen, daß irgendwo auf dem Heap einer JVM liegt. Da spricht nicht nur die Sicherheit und die Komplexität des Vorgehens, sondern auch dessen Fehleranfälligkeit dagegen.

    Die Möglichkeit, die mir sofort einfiel, war das Auslesen eines Screenshots. Dazu ist aber viel Mathematik erforderlich.

  4. Du könntest natürlich alle gültigen Kombinationen durchrechnen und das Minimum/Maximum suchen. Würde aber wahrscheinlich bei langen Listen ewig dauern.

    Ich schätze, daß Problem dürfte NP-vollständig sein, weshalb Du am besten zufällige Kombinationen erstellst und davon das Minimum/Maximum nimmst. Wenn Du zusätzlich noch eine obere sowie untere Schranke erstellst, kannst Du auch eine ungefähre Fehlerwahrscheinlichkeit mit angeben.

  5. Mhhh also wenn er auf A casted braucht er sich auch nicht wundern, wenn die Methode von Objekt A aufgerufen wird :P.

    Objekte werden in Java nicht gecasted. Eigentlich werden nur die Referenzen gecasted. Daher wundert er sich zu recht ...

    Aber: Ich hab's jetzt selbst getestet:

    public class A {
    
    	private int a;
    
    
    	public A(int a) {
    
    		setA(a);
    
    	}
    
    
    	public void setA(int a) {
    
    		this.a = a;
    
    	}
    
    
    	void doSomething(){
    
    		System.out.println("do Something - class A: " + a);
    
    	}
    
    }
    public class B extends A {
    
    	public B(int a) {
    
    		super(a);
    
    	}
    
    
    	void doSomething(){
    
    		System.out.println("do Something - class B");
    
    	}
    
    }
    import java.util.ArrayList;
    
    
    
    public class Test {
    
    	ArrayList<A> bar = new ArrayList<A>();
    
    
    	public Test() {
    
    		bar.add(new A(3));
    
    		bar.add(new B(4));
    
    	}
    
    
    	public A getCasted(int num){
    
    		return (A) (bar.get(num));
    
    	}
    
    
    	public A getUncasted(int num){
    
    		return bar.get(num);
    
    	}
    
    
    	public static void main(String args[]) {
    
    		ArrayList<A> foo = new ArrayList<A>();
    
    		foo.add(new A(1));
    
    		foo.add(new B(2));
    
    
    		System.out.println("For each");
    
    		for(A a : foo) {
    
    			a.doSomething();
    
    		}
    
    
    		System.out.println("direkter Zugriff");
    
    		foo.get(0).doSomething();
    
    		foo.get(1).doSomething();
    
    
    		System.out.println("gecasteter Zugriff");
    
    		((A) foo.get(0)).doSomething();
    
    		((A) foo.get(1)).doSomething();
    
    
    		Test test = new Test();
    
    
    		System.out.println("direkter Zugriff über Methode");
    
    		test.getUncasted(0).doSomething();
    
    		test.getUncasted(1).doSomething();
    
    
    		System.out.println("direkter Zugriff über castende Methode");
    
    		test.getCasted(0).doSomething();
    
    		test.getCasted(1).doSomething();
    
    
    		System.out.println("A-Objekt aus nicht castender Methode");
    
    		A a1 = test.getUncasted(0);
    
    		a1.doSomething();
    
    		A a2 = test.getUncasted(1);
    
    		a2.doSomething();
    
    
    		System.out.println("A-Objekt aus castender Methode");
    
    		a1 = test.getCasted(0);
    
    		a1.doSomething();
    
    		a2 = test.getCasted(1);
    
    		a2.doSomething();
    
    	}
    
    }

    Und folgende Ausgabe bekomme ich:

    For each

    do Something - class A: 1

    do Something - class B

    direkter Zugriff

    do Something - class A: 1

    do Something - class B

    gecasteter Zugriff

    do Something - class A: 1

    do Something - class B

    direkter Zugriff über Methode

    do Something - class A: 3

    do Something - class B

    direkter Zugriff über castende Methode

    do Something - class A: 3

    do Something - class B

    A-Objekt aus nicht castender Methode

    do Something - class A: 3

    do Something - class B

    A-Objekt aus castender Methode

    do Something - class A: 3

    do Something - class B

    Also bei mir läuft alles wie erwartet. Vielleicht postet Du einfach mal Deinen echten Quellcode bzw. vielleicht fällt Dir ein Schritt auf, den Du vergessen hast zu erwähnen?

  6. 
    public A getMe(int num){
    
     return (A) (foo.get(num));
    
    }
    
    

    Mein Problem das ich damit habe, ist dass die Vererbungshierarchie mir hier irgendwie verloren geht. Wenn ich jetzt die getMe Methode verwende, dann kann ich immer nur das doSomething() von Klasse A aufrufen, nicht aber das von Klasse B auch wenn das Objekt von der Klasse B ist...

    Rein theoretisch(!) sollte das aber funktionieren. Da ich allerdings auch weiß, daß Du das wohl nicht posten würdest, wenn Du es nicht geprüft hättest, würde ich sagen: Laß' doch mal den Cast da weg. Du hast doch eine List, die Du mit Generics schon "typisiert" hast. Da ist der Cast doch unnötig. Vll. hilft das ...

  7. Das ganze ist im Rahmen einer Übung meiner Vorlesung zu bearbeiten. RegEx wurden angesprochen und die Übung dient eigentlich zum Anwenden der verschiedenen String-Methoden wie charAt() oder substring().

    Ich wollte es aber etwas eleganter machen. Am liebsten wäre mir ein Zustandsautomat oder so gewesen, aber in der Kürze der Zeit zu viel.

    Und XSLT wäre auch too much.

    Bin aber auf etwas gestoßen. Das hier hilft:

    <a\\s+[^>]*href=\\\"([^\\\"]*)\\\"[^>]*>((.*(?=</a>)))</a>

    Die Quantifizierer und das alles sind mir klar. Nur die Capturing groups noch nicht. Warum muß der Link-Text doppelt gruppiert werden?

  8. Hi,

    ich habe die Aufgabe erhalten, eine HTML-Datei nach Informationen der enthaltenen Links abzugrasen. Es soll vereinfachend angenommen werden, daß ein Link nicht über mehrere Zeilen verteilt sei. Es sollen das href-Attribut, also die Zieladresse, sowie der im Tag enthaltene Text ausgegeben werden.

    Die Aufgabe möchte ich als Gelegenheit wahrnehmen, mich ein wenig mit den regulären Ausdrücken zu befassen. Ich bin auch schon kurz vorm Ziel, aber nun verlassen mich die Kenntnisse über reguläre Ausdrücke.

    Langer Rede kurzer Sinn. Hier stehe ich (Java-RegEx):

    <a\\s+[^<>]*href=\\\"([^<>\\\"]*)\\\"[^<>]*>([^<>]*)</a>
    Das ist mein bisher entwickeltes Pattern. Kurzer Überblick:
    <a // Klar, nach einem a-Tag suchen
    
    \\s+ // Danach muß mindestens ein Whitespace folgen
    
    [^<>]* // Dann ein Haufen beliebiger Zeichen. Bis auf < oder >
    
    href=\\\" // Irgendwann kommt auch ein href-Attribut vor
    
    ([^<>\\\"]*) // Mit einem Inhalt. Allerdings ohne <, > oder "
    
    \\\" // Dann endet das href-Attribut
    
    [^<>]* // Und danach kann noch einiges stehen. Wieder ohne < oder >
    
    > // Der Start-Tag endet
    
    ([^<>]*) // Es folgt ein Inhalt, auch der muß ohne < oder > daherkommen
    
    </a> // Und der Link ist fertig
    Ich dachte mir das so, daß ich mittels Capturing Groups dann nur noch die Gruppen für jeden Fund durchgehe und ausgebe (bis auf Gruppe 0). Das funktioniert auch - fast. Je nachdem wie ich die runden Klammern der Capturing Groups setze, bekomme ich kein Ergebnis bis hin zu 3 Gruppen. Bei den 3 Gruppen enthält dann Gruppe 0 den ganzen Tag (vom "<a" bis zum "</a>"), Gruppe 1 auch und Gruppe 2 den Inhalt des href-Attributs. Ich habe versucht, mir das Prinzip der Capturing Groups anzulesen, aber irgendwie komme ich nicht ganz dahinter, wie der Parser dabei vorgeht. Es erschließt sich mir noch nicht. Ich hoffe, daß hier da jemand nachhelfen kann. Hier ein paar Beispiele:
    Pattern: (<a\\s+[^<>]*href=\\\"([^<>\\\"]*)\\\"[^<>]*>([^<>]*)</a>)
    
    Input: <a href="blubb">bla</a>
    
    Output:
    
    Group 0: <a href="blubb">bla</a>
    
    Group 1: <a href="blubb">bla</a>
    
    Group 2: blubb
    Pattern: <a\\s+[^<>]*href=\\\"([^<>\\\"]*)\\\"[^<>]*>([^<>]*)</a>
    
    Input: <a href="blubb">bla</a>
    
    Output:
    
    Group 0: <a href="blubb">bla</a>
    
    Group 1: blubb
    Pattern: <a\\s+[^<>]*href=\\\"[^<>\\\"]*\\\"[^<>]*>([^<>]*)</a>
    
    Input: <a href="blubb">bla</a>
    
    Output:
    
    Group 0: <a href="blubb">bla</a>
    Pattern: <a\\s+[^<>]*href=\\\"([^<>\\\"]*)\\\"[^<>]*>[^<>]*</a>
    
    Input: <a href="blubb">bla</a>
    
    Output:
    
    Group 0: <a href="blubb">bla</a>
    Pattern: <a\\s+[^<>]*href=\\\"[^<>\\\"]*\\\"[^<>]*>[^<>]*</a>
    
    Input: <a href="blubb">bla</a>
    
    Output:

  9. Verstehe ich das richtig? Du willst den Pfad zu einer Datei. Dieser Pfad unterscheidet sich von Rechner zu Rechner?

    Falls ich richtig liege, würde ich eine Umgebungsvariable oder eine Einstellungsdatei empfehlen, in der Du den gewünschten Pfad sicherst.

  10. Ich stell' mir aber eher die Frage, wie denn da eine andere Exception fliegen soll?!? Die möglichen Exceptions werden von den Methoden, die Du nutzt, vorgegeben. Andere sind IMHO nicht möglich. Sicher kannst Du die beiden Blöcke zu einem Blocj zusammenfassen, da sie eh' das gleiche tun. Aber das ist ein anderes Paar Schuhe.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...