Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.

Vorwort

Ich möchte true auch in Java mit == 1 && a == 2 && a == 3 ausgeben.

Betriebsumgebung

Logik etc.

Da es sich um Java (?) Handelt, wird der if-Beurteilungsteil in eine andere Klasse extrahiert. Machen Sie es zu einer statischen Methode, da der Wert des Arguments nicht neu geschrieben wird.

package study.javassist;

public class Judge {

	public static boolean judge(int a) {

		if (a == 1 && a == 2 && a == 3) {
			return true;
		} else {
			return false;
		}

	}

}

Die Hauptklasse, die die obige Klasse aufruft, ist wie folgt.

package study.javassist;

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;

public class JudgeCall {

	public static void main(String[] args) {
		try {
			new JudgeCall().execute();
		} catch (NotFoundException | CannotCompileException e) {
			e.printStackTrace();
		}
	}

	private void execute() throws NotFoundException, CannotCompileException {
		ClassPool cp = ClassPool.getDefault();
		CtClass cc = cp.get("study.javassist.Judge");
		CtMethod method = cc.getDeclaredMethod("judge");
		
		String newJudgeMethod = "{return true;}";
		method.setBody(newJudgeMethod);
		
		cc.toClass();

		System.out.println(Judge.judge(1));
		System.out.println(Judge.judge(2));
		System.out.println(Judge.judge(3));
		System.out.println(Judge.judge(4));
	
	}
}

Ergebnis

true
true
true
true

Kommentar

Bei der Methode execute () wird der Verarbeitungsinhalt der Judge-Methode der Klasse study.javassist.Judge so umgeschrieben, dass er immer wahr ist.

Eindrücke habe ich versucht

javassist, ich habe es irgendwie vermieden, aber kann es verwendet werden, wenn es um den grundlegenden Teil des Systems geht? Wenn ich das nächste Mal eine Chance habe, werde ich darüber nachdenken.

Recommended Posts

Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Sogar in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Javassist zweite Abkochung)
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (graue Magie, die weniger schwarze Magie ist)
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Royal Road Edition, die weder Magie noch irgendetwas ist)
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich möchte eine Parkettdatei auch in Ruby erstellen
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
Ich möchte mit Jakarta EE 8 mit Java 11 ein dunkles Web-SNS erstellen
Ich möchte eine E-Mail in Java senden.
Ich möchte Java8 für jeden mit Index verwenden
rsync4j - Ich möchte rsync in Java berühren.
Ich habe versucht, neunundneunzig in Java auszugeben
Ich möchte irgendwann sogar in Kotlin sein
Ich habe versucht, den Block mit Java zu brechen (1)
Ich möchte so etwas wie "cls" in Java machen
Ich möchte ES2015 auch in Java verwenden! → (´ ・ ω ・ `)
Ich möchte ein kleines Symbol in Rails verwenden
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich möchte eine Funktion in der Rails Console definieren
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Ich möchte in RSpec auf einen GoogleMap-Pin klicken
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
Ich möchte ein Objekt im CSV-Format mit mehrzeiligem Header und Filter in Java zurückgeben
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 1 (API Edition)
Auch wenn ich den Inhalt eines Datenobjekts in Java in JSON konvertieren möchte, gibt es einen Zirkelverweis ...
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
[Java] Ich möchte ein Byte-Array in eine Hexadezimalzahl konvertieren
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe einen RESAS-API-Client in Java erstellt
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen
Ich möchte eine Schleife schreiben, die auf einen Index mit der Stream-API von Java 8 verweist
Ich möchte das Flash-Attribut im Frühjahr, auch wenn ich einen Reverse-Proxy festgelegt habe! (TU es nicht)
Ich möchte mit Java8 StreamAPI redu () einen anderen Typ als das Eingabeelement zurückgeben.
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 2 (Client Edition)
Ich habe ein PDF mit Java erstellt.
Ich habe versucht, mit Java zu interagieren
Protokollausgabe in Datei in Java
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich kann in IntelliJ keine Java-Klasse mit einem bestimmten Namen erstellen
Ich möchte mit einem regulären Ausdruck zwischen Zeichenketten extrahieren
[Wire Mock] Ich möchte einen Stub / Mock-Server in Java einrichten und E2E-Tests durchführen.
[Ruby] Ich möchte nur das ungerade Zeichen in der Zeichenfolge ausgeben
[Rails] Ich möchte Daten verschiedener Modelle in einem Formular senden
Ich möchte ein schönes build.gradle schreiben
[Persönliches Memo] Interaktion mit dem Zufallszahlengenerator in Java
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!