我试图使用反射获得一个不可见类,AKA包私有类的实例.我想知道是否有办法切换修饰符使其公开然后使用它来访问它Class.forName.当我尝试这一点时,它阻止我说我不能这样做.不幸的是setAccesible,Class班上没有方法.
我正在尝试使用JavaCompiler类:
当我调用ToolProvider.getSystemJavaCompiler()时,它返回null.
我想这是因为我使用的是JRE而不是JDK.
问题是我希望它在所有平台上运行,无论用户使用JRE还是JDK的天气如何.
如果有人知道如何解决这个问题,或者使用其他方法请注释.
任何帮助,将不胜感激.
我试图在java中编写一个按位计算器,你可以输入一个表达式,如~101,然后当我运行这段代码时它会返回10
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
Integer a = Integer.valueOf("101", 2);
System.out.println(Integer.toString(~a,2));
}
}
Run Code Online (Sandbox Code Playgroud)
它输出-110为什么?
我在java程序中生成动态类,将所有代码写入java文件,将java文件编译为类文件,然后使用URLClassLoader加载类文件.这个问题是它在我的计算机上创建了很多文件.他们只是通过创建"虚拟文件"(文件对象)而不生成任何实际文件来实现这一点,因为我这样做的方式需要时间并且看起来不干净且效率低下.
我想知道他们是否可以使用反射或相关API在运行时动态创建类的静态字段.如果需要,我可以使用java本机接口来完成此任务,如果有人可以告诉我适当的步骤.我不想使用任何数据结构,例如哈希映射,因为我完全是为了好玩.请不要建议使用地图,因为我没有将它用于任何真实的程序,这是一个完全理论上的情况.谢谢.
我已经打包我的jar文件内的exe文件,我试图将其复制到一个临时位置,这样我可以使用运行它Desktop.browse(),要做到这一点,我设置了输入流构造扫描仪使用class.getResourceAsStream,然后用printwriter写的,所有的到一个文件.发生的问题表明exe无效.我认为这是由于一些二进制数据丢失.如果有人可以提供帮助,请发表评论.
Scanner sc = new Scanner(ClassBuilder.class.getResourceAsStream("jd-gui.exe"));
File copy = new File("C://users//Owner//Desktop//java//jd-gui.exe");
copy.createNewFile();
PrintWriter writer = new PrintWriter(copy);
while(sc.hasNextLine())
writer.println(sc.nextLine());
writer.flush();
writer.close();
sc.close();
Desktop.getDesktop().browse(copy.toURI());
Run Code Online (Sandbox Code Playgroud) 我有这个if语句
if((check1==null||!check1.isSolid())&&(check2==null)||!check2.isSolid())
Run Code Online (Sandbox Code Playgroud)
它抛出一个空指针异常,因为check1或check2为空,但我不明白它为什么这样做,因为我在访问对象之前检查null条件,如果对象为null,为什么java麻烦检查isSolid因为它本来是真的.
我有这个课程的一部分
private static Stack<Integer> integers = new Stack<Integer>();
private static int nextInt()
{
if(integers.isEmpty())
{
refill();
}
return integers.pop();
}
public static int peekInt()
{
if(integers.isEmpty())
{
refill();
}
return integers.peek();
}
private static synchronized void refill()
{
for(int i = 0; i<7; i++)
integers.add(i);
Collections.shuffle(integers);
}
Run Code Online (Sandbox Code Playgroud)
两个不同的线程调用nextInt和peekInt方法,但有时它们会得到一个堆栈空的异常,但如果它们在获取值之前调用refill,为什么会发生这种情况.
这是异常跟踪
Exception in thread "Thread-7" java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:102)
at Utility.peekInt(Utility.java:26)
at Frame$repainter.run(Frame.java:72)
at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)