public static void main(String[] args) { byte a = 12; int b = a; System.out.println(b.getClass().getName());问题在哪里
时间: 2024-03-01 16:50:59 浏览: 25
在Java中,基本数据类型是没有对应的Class对象的,因此在这段代码中,调用b.getClass().getName()会抛出一个编译时错误。如果你想要获取变量的类型,可以使用Java的反射机制,具体代码如下:
```java
byte a = 12;
int b = a;
Class<?> bClass = b.getClass();
System.out.println("变量类型为:" + bClass.getName());
```
这段代码可以打印出变量类型的全限定名。如果你想要打印出更友好的类型名,可以使用Java自带的Type类或第三方库,比如Apache Commons Lang库中的ClassUtils类。
相关问题
public class shujv { public static void main(String[] args) { byte a = 12; int b = a; Class<?> bClass = b.getClass(); System.out.println("变量类型为:" + bClass.getName()); // int c = 100; } }报错:java: 无法取消引用int
这个错误是因为 int 类型是一个基本数据类型,没有对应的 Class 对象,无法调用 `getClass()` 方法获取它的类型信息。如果你需要获取 int 类型的类型信息,可以使用 `Integer.TYPE`,它是 int 类型的 Class 对象。
修改代码如下:
```
public class shujv {
public static void main(String[] args) {
byte a = 12;
int b = a;
Class<?> bClass = Integer.TYPE;
System.out.println("变量类型为:" + bClass.getName());
}
}
```
这样就能输出变量类型为 `int` 了。
编写一个自定义类加载器,加载指定位置的指定类到JVM中。(50分) 需求: 1、 编写Student.java文件
好的,这是一个简单的示例代码,用于加载指定位置的指定类到JVM中。注意,这个代码只是一个简单的示例,实际中需要根据具体情况进行适当修改。
```java
import java.io.*;
public class MyClassLoader extends ClassLoader {
private String classPath;
public MyClassLoader(String classPath) {
this.classPath = classPath;
}
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
byte[] data = loadClassData(name);
return defineClass(name, data, 0, data.length);
}
private byte[] loadClassData(String name) {
String fileName = classPath + File.separatorChar + name.replace('.', File.separatorChar) + ".class";
try (InputStream in = new FileInputStream(fileName);
ByteArrayOutputStream out = new ByteArrayOutputStream()) {
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
return out.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) throws Exception {
String classPath = "/path/to/classes";
String className = "Student";
MyClassLoader myLoader = new MyClassLoader(classPath);
Class<?> clazz = myLoader.loadClass(className);
Object obj = clazz.newInstance();
System.out.println(obj.getClass().getClassLoader());
// do something with obj...
}
}
```
其中,`classPath` 是类文件所在的路径,`className` 是要加载的类名。在 `findClass` 方法中,我们读取指定路径下的指定类文件,并将其转换成字节数组,然后调用 `defineClass` 方法将其转换成 `Class` 对象。在 `main` 方法中,我们通过 `MyClassLoader` 加载指定路径下的指定类,并创建一个对应的实例,然后可以进行其他操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)