我正在阅读一些Java文本,文本说我们只能为类和接口应用public或default访问修饰符.因此,如果我们声明:它是一个编译错误:
private class A {}
Run Code Online (Sandbox Code Playgroud)
要么
protected class A{}
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么类或接口无法接收private或protected访问修饰符?
是否有理由拥有一个像这样的字段的对象:
class Thing {
Thing field;
public Thing() {
this.field = this;
}
}
Run Code Online (Sandbox Code Playgroud)
我不是在谈论一个具有相同类型字段的类,而是一个类,使得类的每个实例都将其自身作为字段.我刚刚在一些遗留代码中看到了这个(这个领域从未使用过),所以我很好奇.任何合法使用这个?
我刚开始修补Google Spreadsheet的脚本,我遇到了一个问题:
如何测试函数参数的类型是否是一系列单元格?
我想做这样的事情:
if(typeof intput != "range") {
throw "input must be a range";
}
Run Code Online (Sandbox Code Playgroud)
从谷歌的例子在这里(页面的中间):
if (typeof inNum != "number") { // check to make sure input is a number
throw "input must be a number"; // throw an exception with the error message
}
Run Code Online (Sandbox Code Playgroud)
所以这似乎是测试变量类型的正确方法.但我不知道如何测试该类型是否是一系列细胞.
如果我可以指定范围是一维还是二维,那就更好了.
我正在使用WorldWind Java和 Eclipse。
我正在尝试从 Eclipse 中的项目中导出一个可运行的 jar。导出进行得很顺利,但是当我尝试运行 jar 时出现此错误:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at com.sun.gluegen.runtime.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:102)
at com.sun.gluegen.runtime.NativeLibLoader.access$000(NativeLibLoader.java:51)
at com.sun.gluegen.runtime.NativeLibLoader$1.run(NativeLibLoader.java:70)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.gluegen.runtime.NativeLibLoader.loadGlueGenRT(NativeLibLoader.java:68)
at com.sun.gluegen.runtime.NativeLibrary.ensureNativeLibLoaded(NativeLibrary.java:399)
at com.sun.gluegen.runtime.NativeLibrary.open(NativeLibrary.java:163)
at com.sun.gluegen.runtime.NativeLibrary.open(NativeLibrary.java:129)
at com.sun.opengl.impl.x11.DRIHack.begin(DRIHack.java:109)
at com.sun.opengl.impl.x11.X11GLDrawableFactory.<clinit>(X11GLDrawableFactory.java:99)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at javax.media.opengl.GLDrawableFactory.getFactory(GLDrawableFactory.java:111)
at javax.media.opengl.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:520)
at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:131)
at javax.media.opengl.GLCanvas.<init>(GLCanvas.java:90)
at gov.nasa.worldwind.awt.WorldWindowGLCanvas.<init>(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地在 Eclipse 中运行该项目,我在构建路径中引用了 …
是否可以在 EMF Ecore 模型中进行枚举实现接口?在 Java 中可能有类似 : 的东西public enum MyEnum implements MyInterface。我希望能够通过 EMF 生成这样的东西(顺便说一句,似乎默认情况下所有由 EMF 生成的枚举实现org.eclipse.emf.common.util.Enumerator)。
我找不到让我生成的枚举实现特定接口的方法。我无法在 ecore 图编辑器中定义与枚举的继承关系,也无法在 ecore 模型编辑器中定义继承关系。我可以implements在生成代码后手动将位添加到枚举中,但是每次我再次生成代码时它都会被覆盖。
或者,有没有办法让implements(并且只有它)不被 EMF 的代码生成覆盖?
我知道我可以修改@generated类 javadoc 注释中的标记,@generatedNOT以便代码生成器知道它不能覆盖类,但是当我修改模型时它会阻止类被更新。
现在我所做的是implements每次修改模型中的枚举时手动添加,并@generatedNOT在其余时间保留标签。我觉得这会在几个月后变得危险,当我忘记它时,或者更糟的是,当其他人试图修改它时,即使有适当的记录。
有点相关:EMF Eclipse: enumeration with custom fields (properties)
我无法访问编译器 atm,但我正在考虑如何生成随机浮点值。要生成随机整数值,我将使用:
Random r = new Random();
int x = r.nextInt(8) + 9;
Run Code Online (Sandbox Code Playgroud)
我如何生成一个介于 6.2 和 7.4 之间的随机数?