我想在Eclipse中编译我的Java程序但不运行它.我无法理解如何做到这一点.
如何.class在不运行的情况下将Java程序编译为Eclipse中的文件?
当访问我的单页应用程序的"重置密码"路径并查看Chrome浏览器控制台时,我会收到以下警告:
[DOM]密码表单应具有(可选隐藏)用户名字段以便访问:(更多信息:goo.gl/9p2vKq)
有用的是,相关表单的html也会在下一行打印到控制台,并且非常清楚地包含一个隐藏的用户名字段:
<form data-ember-action data-ember-action-436=?"436">?
<div class=?"form-group">
?<label for=?"newpasswordone">?Password?</label>?
<input type=?"password" autocomplete=?"new-password" placeholder=?"Enter your new password" id=?"ember437" class=?"form-control ember-text-field ember-view" data-op-id=?"0">?
<label for=?"newpasswordtwo">?Password (again)?</label>
?<input type=?"password" autocomplete=?"new-password" placeholder=?"Re-enter your new password" id=?"ember438" class=?"form-control ember-text-field ember-view" data-op-id=?"1">?
<input type=?"hidden" name=?"username" autocomplete=?"username" value=?"a_b">
? </div>?
<button disabled type=?"submit" class=?"btn btn-default">?Reset password?</button>??
</form>?
Run Code Online (Sandbox Code Playgroud)
我尝试了一些小的变化 - 取消隐藏用户名字段,将其标记为只读,将其移到div- 而不影响警告.Chrome如何为用户名提供服务?
Chrome 63和64出现问题.
可以List<T>初始化为包含给定数量的nulls,其中T是列表所属类的类型参数吗?我确定可以用循环来做,但想知道是否可以没有.
List<T> myList = new ArrayList<T>(numEls);
Run Code Online (Sandbox Code Playgroud)
创建一个给定容量的列表,但是大小为0,因此myList.get(x)对所有人都失败x,例如myList.set(numEls-1,null).
myList = Arrays.asList(new T[numEls]);
Run Code Online (Sandbox Code Playgroud)
不编译,和
myList = (List<T>) Arrays.asList(new Object[numEls]);
Run Code Online (Sandbox Code Playgroud)
在Eclipse中编译(带有未经检查的强制转换警告),但不是用javac编译.
更新:谢谢你的答案!但是,我找到了另一个很短的解决方案,接近我上面的上一次尝试,它在eclipse和我们的自动构建系统中编译:强制转换数组,而不是列表!
myList = Arrays.asList((T[]) new Object[numEls]);
Run Code Online (Sandbox Code Playgroud) 有没有办法找出实际使用varargs或数组调用varargs的Java函数(或构造函数)?
说我有以下内容:
public class MyCompositeObjects {
MyObject[] objects;
MyCompositeObjects(MyObjects... objects) {
this.objects = Arrays.copyOf(objects,objects.length);
// or just: this.objects = objects; ?
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
可以使用单个MyObject[]参数调用构造函数,该参数可能稍后更改,如果我不在构造函数中复制数组,那么这些更改也将应用于成员变量objects,对吧?但是,如果使用多个MyObjects 调用构造函数,则没有其他对数组*的引用,以便稍后在类外部进行更改,因此我可以直接分配它.我可以告诉构造函数(或者,通常是任何采用varargs的函数)如何调用它?
*nb:这是否有特定的名称?它只是一个匿名数组吗?
我在日食中遇到问题,以下四行分布在相应的四个文件中:
public interface I<T> {}
public interface ISpecial<T> extends I<T> {}
public class Base implements I<String> {}
public class Special extends Base implements ISpecial<String> {}
Run Code Online (Sandbox Code Playgroud)
Eclipse告诉我(并且只有我和其他几个人都没有将相同的,稍微复杂的项目导入他们的工作区)
The interface I cannot be implemented more than once with different arguments: I<String> and I<String>
这是因为几天前我检查并安装了Eclipse更新(我几个月没做过),并更改了"Java编译器"设置对话框中的一些"错误/警告"设置(所以我做了)不知道这些变化中的任何一个是否应该受到指责,但我已经将所有可能是"错误"的内容切换为"警告"并且问题仍然存在.)
我想巧妙地提交给Eclipse,这<String>不是一个不同的论点<String>,但不知道我是如何或是否在这里遗漏了一些东西.
更新:将JDK编译器合规性级别设置为1.5(从1.7开始)后,问题在我创建的测试项目(使用上面的代码)中消失了,但在最初发生的更复杂的项目中却没有.在前者中,在将合规性级别再次设置为1.6或1.7之后问题没有回来,所以现在我自己再也无法用最小的例子重现问题,而没有解决原始问题本身.
我正在尝试调试我的一段代码,其中Integer地图中的()值有时会出乎意料地高.
当我这样做
Collection<Integer> vals = newState.values();
int max = Collections.max(vals);
return newState; // breakpoint here
Run Code Online (Sandbox Code Playgroud)
我可以在return语句的行中设置条件断点,条件涉及max,例如max > 10.当我省略中间行并设置断点条件时Collections.max(vals) > 10,我在调试模式下得到一个运行时异常.
"原因:类型没有实现选择器最大值和签名(Ljava/util/Collection;)Ljava/lang/Comparable;"
我可以通过上面的代码片段得到我想要的东西,但我仍然想知道这里发生了什么.猜测可能是Collections方法未能意识到Integer确实具有可比性,我尝试了Collections.<Integer>max(v)一些(语法错误)变化,但没有成功.
java ×5
eclipse ×3
.class-file ×1
autocomplete ×1
compilation ×1
generics ×1
hidden-field ×1
list ×1