Wollten Sie schon immer ein kleines Java-Programm ausprobieren?
Von "Java9" wird "JShell" als REPL-Tool installiert.
Mit Java11
ist es jetzt möglich, Java-Dateien ohne vorheriges javac
auszuführen.
Auch die Online-Ausführungsumgebung wie paiza.IO ist praktisch.
Es ist definitiv einfach zu tun. Ich frage mich jedoch, ob ich das Programm einfacher ausprobieren kann ... Saya: bangbang: Ich wünschte, ich könnte den Java-Code ausführen, der in der Zwischenablage steckt ...: point_up:
Also habe ich mir den Titel ausgedacht, der Java-Code ausführt, der in der Zwischenablage </ b> </ font> gespeichert ist.
Ich habe das Internet leicht durchsucht, aber soweit ich gesucht habe, ist es nicht herausgekommen, also werde ich es schaffen. (Ich brauche es überhaupt nicht, also kommt es nicht heraus ...: Kacke: Es riecht etwas mehr ...: Kacke: ist beiseite.)
Als Mechanismus ist es ein einfacher Mechanismus, eine Zeichenfolge aus der Zwischenablage abzurufen und die Zeichenfolge an "jshell" zu übergeben. Übrigens werden die folgenden Pakete standardmäßig in "JShell" importiert.
jshell> /import
| import java.io.*
| import java.math.*
| import java.net.*
| import java.nio.file.*
| import java.util.*
| import java.util.concurrent.*
| import java.util.function.*
| import java.util.prefs.*
| import java.util.regex.*
| import java.util.stream.*
Erstellen Sie zunächst ein Teil, um die Zeichenfolge aus der Zwischenablage abzurufen. Alles ist in Ordnung, aber ich habe es in Java geschrieben.
PrintClipboardString.java
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
/**
*Gibt Zeichenfolgendaten aus der Zwischenablage aus.
*/
public class PrintClipboardString {
/**
*Maine
*/
public static void main(String[] args) {
System.out.println(getClipboardString());
}
/**
*Gibt Zeichenfolgendaten aus der Zwischenablage zurück.
*
* @return Gibt die Zeichenfolgendaten der Zwischenablage zurück. Gibt null zurück, wenn es sich nicht um Zeichenfolgendaten handelt.
*/
public static String getClipboardString() {
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
try {
return (String) clip.getData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException e) {
return null;
} catch (IOException e) {
return null;
}
}
}
Erstellen Sie als Nächstes eine Batch-Datei (DOS), die diese "PrintClipboardString.java" verwendet. Es ist die Aufgabe, Zeichenkettendaten aus der Zwischenablage abzurufen und an "JShell" zu übergeben.
clipbord_jshell.bat
@echo off
setlocal enabledelayedexpansion
set CLIP_BOARD=
for /f "usebackq tokens=*" %%i in (`java PrintClipboardString`) do (
set CLIP_BOARD=!CLIP_BOARD!^
%%i
)
echo =============
Echoquelle
echo =============
echo !CLIP_BOARD!
echo.
echo =============
Ergebnis der Echoausführung
echo =============
echo !CLIP_BOARD! | jshell -
echo.
pause
Da dies "DOS" ist, wird die for-Anweisung unter Berücksichtigung des Teils verwendet, der das Ergebnis der Befehlsausführung verarbeitet. Ich denke jedoch, dass dies einfach ist, da Backquotes normalerweise mit "Unix-Shell" verwendet werden können.
System.out.println("hello");
↑ Kopieren Sie diesen Text (speichern Sie ihn in der Zwischenablage) und führen Sie die Batchdatei aus.
$clipbord_jshell.bat
=============
Quelle
=============
System.out.println("hello");
=============
Ausführungsergebnis
=============
hello
Drücken Sie eine beliebige Taste, um fortzufahren. . .
Gutes Gefühl: sonnig:
System.out.println(Math.random());
System.out.println(Math.random());
System.out.println(Math.random());
↑ Kopieren Sie diese 3 Textzeilen (speichern Sie sie in der Zwischenablage) und führen Sie die Batchdatei aus.
$clipbord_jshell.bat
=============
Quelle
=============
System.out.println(Math.random());System.out.println(Math.random());System.out.println(Math.random());
=============
Ausführungsergebnis
=============
0.13619188697681628
0.6036857063092008
0.7567411771330568
Drücken Sie eine beliebige Taste, um fortzufahren. . .
Die Quelle wird in einer Zeile angezeigt, aber das Ausführungsergebnis ist auch bei mehreren Zeilen gut.
Da java.math. *
Wurde bereits in JShell
importiert, konnte es ohne separaten Import ausgeführt werden.
Ich denke, dass es viele Fälle gibt, in denen Sie das Datumsbetriebssystem relativ ausprobieren möchten.
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
LocalDateTime d = LocalDateTime.now();
LocalDateTime c = LocalDateTime.of(2018, 12, 25 , 23, 59);
System.out.println (" bis Weihnachten ... "+ ChronoUnit.DAYS.between (d, c) +" Tag ");
↑ Kopieren Sie 5 Zeilen dieses Textes (speichern Sie ihn in der Zwischenablage) und führen Sie die Batchdatei aus.
$clipbord_jshell.bat
=============
Quelle
=============
import java.time.LocalDateTime;import java.time.temporal.ChronoUnit;LocalDateTime d = LocalDateTime.now();LocalDateTime c = LocalDateTime.of(2018, 12,
25 , 23, 59);System.out.println("Bis Weihnachten ..." + ChronoUnit.DAYS.between(d, c) + "Tag");
=============
Ausführungsergebnis
=============
20 Tage bis Weihnachten
Drücken Sie eine beliebige Taste, um fortzufahren. . .
Deketa: entspannt:
-Es scheint, dass es verwendet werden kann, um ein Programm (abgeschlossenes Programm) auszuführen, das aus dem Internet kopiert wurde. ・ Es ist mühsam, die Standardausgabe (System.out ~) einzeln auszugeben. -Es ist leicht, versehentlich etwas anderes als Java-Code zu kopieren und auszuführen. Wütend werden: no_good_tone3: -Wenn in der Mitte ein Zeilenkommentar eingefügt wird, wird Folgendes als Kommentar betrachtet und die Logik wird überhaupt nicht ausgewertet. (Gibt es hier Raum für Verbesserungen?) ・ Ich denke, es ist ein Müllwerkzeug, aber mein Kind ist süß: Kacke: ・ Ist die Sicherheit in Ordnung? vom Infrastrukturingenieur · Ich habe nicht nachgedacht.
Das sind frohe Weihnachten: christamas_tree:
Recommended Posts