ниже приведен код, указанный в MainClass.java.
public class MainClass {
public static void main(String[] args) {
System.out.println("main started...");
Class c = MyClass.class ;
//this class variable seems to be public static.
//But, as it is clearly visible in the MyClass,
//no reference variable is declared.
//My problem is that from where this class variable
//came from.
//i also check out the Object.java file, but it also don't
//have any public static class variable of Class class
//like there is
//out (instance of PrintStream class) in System class.
//Hope all u mindoverflow guys help me to sort out
//this probz.
try {
Class.forName( c.getName() ) ;
System.out.println("classloader of MyClass : " + MyClass.class.getClassLoader());
System.out.println("classloader of MyClass : " + String.class.getClassLoader());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("main ended...");
}
}
class MyClass{
static{
System.out.println("static block of MyClass class.");
}
}
Thhx Coobird ...
Я нашел статью довольно полезной. :)
Но о литературных знаниях я ограничен только:
int i = 5 ; //here 5 is an integer literal
float f = 5.6f ; //here 5.6f is a float literal
единственный не примитивный литературный, я знаю, это
String str = "java" ; //"java" is a String litereal
и литерал класса, который вы и Джон Скит очень хорошо разъяснили.
есть ли в java больше литералов ???
согласился ...
Таким образом, согласно обсуждению, общие литералы подразделяются на: -
- примитивные литералы
- строковые литералы
- буквальный класс
- 1028 * нуль *
есть ли еще несколько литералов (чтобы сделать список немного длиннее :) )
когда я декомпилирую класс MainClass.class с использованием декомпилятора, два класса
Тип статические переменные (может быть coz, я использовал литерал класса 2 раза) автоматически добавляются, но никогда не используются
в коде. Кроме того, оба литерала класса напрямую заменены из файла класса, где я использовал их в файле Java.
Мой код: -
public class MainClass {
public static void main(String[] args) {
System.out.println("main started...");
Class c = MyClass.class ;
try {
Class.forName( c.getName() ) ;
System.out.println("classloader of MyClass : " + MyClass.class.getClassLoader());
System.out.println("classloader of MyClass : " + String.class.getClassLoader());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("main ended...");
}
}
Код, сгенерированный декомпилятором: -
import java.io.PrintStream;
public class MainClass
{
public MainClass()
{
}
public static void main(String args[])
{
System.out.println("main started...");
Class c = MyClass;
try
{
Class.forName(c.getName());
System.out.println((new StringBuilder("classloader of MyClass : ")).append(MyClass.getClassLoader()).toString());
System.out.println((new StringBuilder("classloader of MyClass : ")).append(java/lang/String.getClassLoader()).toString());
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
System.out.println("main ended...");
}
static Class class$0;
static Class class$1;
}