我正在寻找一种干净,安全的方法来确保类的字段永远不会被设置为null.我希望字段值在类构造函数中设置一次,以后再也不会修改.我认为他在C#中的readonly关键字允许这样做.有没有办法在Java中做同样的事情?
class foo
{
private Object bar;
public foo(Object pBar)
{
if(pBar == null)
{
bar = new Object();
}
else
{
bar = pBar
}
}
// I DO NOT WANT ANYONE TO MODIFY THE VALUE OF bar OUT OF THE CONSTRUCTOR
}
Run Code Online (Sandbox Code Playgroud) 请解释为什么如果我在方法 test() 中使用原始类型 A ,我的类型列表中的 get() 方法返回一个对象而不是 B 。:
public class test
{
public class B{}
public class C{}
public class A<T extends C>
{
private List<B> aBList;
public List<B> mGetBList()
{
return aBList;
}
}
public test(A pA) // Use of raw type - this is bad, I know!
{
B lB = pA.mGetBList().get(0); // Compile error: Type mismatch:
// cannot convert from Object to test.B
}
}
Run Code Online (Sandbox Code Playgroud)
如果我声明
public test(A<?> pA)
Run Code Online (Sandbox Code Playgroud)
get() 方法按预期返回 B。
我想告诉 Visual Studio 在程序的第一条指令处中断(在main()调用函数之前)。我记得可以在 CodeWarrior IDE 中进行嵌入式开发,这在 Visual Studio 中可行吗?
在我的swing应用程序中,当我从主要组件中移除jogl GLCanvas以在同一位置添加jPanel时,会出现一些显示故障:在旧组件被删除之前和添加新组件之前,剩下的就是剩余的之前在GLCanvas顶部显示的所有弹出菜单的图像在主要组件的背景上可见.
我怎么能避免这个?
我正在使用ByteBuffers并将FileChannels二进制数据写入文件.当为大文件或连续多个文件执行此操作时,我得到一个OutOfMemoryError例外.我在其他地方读过,Bytebuffers与NIO一起使用已被打破,应该避免.你们中是否有人遇到过这种问题,并找到了一个有效地在java文件中保存大量二进制数据的解决方案?
jvm选项是否可行-XX:MaxDirectMemorySize?
java ×4
breakpoints ×1
bytebuffer ×1
debugging ×1
field ×1
filechannel ×1
generics ×1
jogl ×1
nio ×1
null ×1
swing ×1