Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JShell How to find the type of Variable or Result

Tags:

java

jshell

How to find the type of a variable or Expression Result in JShell.

Was experimenting Bitwise Operators in Java

jshell> byte b=5<<-1;
|  Error:
|  incompatible types: possible lossy conversion from int to byte
|  byte b=5<<-1;
|         ^---^

jshell> 5<<-1
$2 ==> -2147483648

jshell>

Is there an alternative like Python type(5<<-1) to find the result type of expression or variable in Jshell.

like image 642
Sundar Rajan Avatar asked Feb 05 '18 18:02

Sundar Rajan


2 Answers

Just figured out it can be solved by setting the feedback mode.

/set feedback verbose

Reference https://docs.oracle.com/javase/9/jshell/feedback-modes.htm

Now can easily find the type of an expression or variable in the response.

jshell> 5<<-1
$15 ==> -2147483648
|  created scratch variable $15 : int

The mode can be reset by using the command

/set feedback normal

and the current mode can be queried by simply calling

/set feedback
like image 93
Sundar Rajan Avatar answered Nov 14 '22 04:11

Sundar Rajan


I found an explicit way to do this (I'm running with JDK11) using the /vars command

|  Welcome to JShell -- Version 11
|  For an introduction type: /help intro

jshell> 5<<-1
$1 ==> -2147483648

jshell> /vars
|    int $1 = -2147483648
like image 42
Karl Horton Avatar answered Nov 14 '22 05:11

Karl Horton