case1,case2和case3之间有什么区别吗?有没有与绩效相关的优势或劣势?
public class Test {
private String name;
public void action (){
name = doSome(); // case 1
setName(doSome()); // case2
this.name =doSome(); // case3
}
public String doSome(){
return "Hello";
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud) 问题是关于功能界面的分配背景 -
Predicate<String> p = String::isEmpty;
Run Code Online (Sandbox Code Playgroud)
isEmpty在String类中的方法声明为 - 的情况下工作正常public boolean isEmpty(){}.
如果我尝试在自定义类中声明相同 -
class Test{
public boolean isEmpty(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
做同样的任务 -
Predicate<String> p = Test::isEmpty;
Run Code Online (Sandbox Code Playgroud)
这将是编译错误 -
Test类型没有定义适用于此的isEmpty(String)
并且Predicate<T>表示一个参数的谓词(布尔值函数)和函数方法boolean test(T t){}.
任何解释?我错过了什么吗?
我知道如何使用逗号printf作为分组分隔符以格式打印值
1,000,000.00
打印它我正在使用命令
System.out.printf ("%,.2f", value);
但如何使用空格作为分组分隔符来格式化值
1 000 000.00
我试图找到解决方案,但DecimalFormat现在使用的解决方案让我复杂化(初学者级别).
有逗号这样的简单方法吗?
正如标题本身所暗示的那样......我必须首先自动调整对比度、亮度和锐度,然后如果需要,我必须提供手动调整搜索栏。
是否有任何库可用于自动调整?
我使用NetBeans 7.2(在Windows 7环境中)从我的Web应用程序构建war文件,该文件在NetBeans上下文中使用GlassFish 3.1.2服务器的测试阶段正确运行.
package-info.java文件中定义的命名空间正确添加到我的xml文件中.
但是,当我在Linux机器上单独运行GlassFish服务器部署war文件时,命名空间被设置为默认的ns1而不是package-info.java文件定义的那个?
我究竟做错了什么?
此致,杰拉德
我遵循以下方法来计算中间元素linked list,但我想要的是有任何内置方法或任何其他方法也可以轻松找到相同,我所遵循的方法如下所示:
import test.LinkedList.Node;
public class LinkedListTest {
public static void main(String args[]) {
//creating LinkedList with 5 elements including head
LinkedList linkedList = new LinkedList();
LinkedList.Node head = linkedList.head();
linkedList.add( new LinkedList.Node("1"));
linkedList.add( new LinkedList.Node("2"));
linkedList.add( new LinkedList.Node("3"));
linkedList.add( new LinkedList.Node("4"));
//finding middle element of LinkedList in single pass
LinkedList.Node current = head;
int length = 0;
LinkedList.Node middle = head;
while(current.next() != null){
length++;
if(length%2 ==0){
middle = middle.next();
}
current = current.next();
}
if(length%2 == …Run Code Online (Sandbox Code Playgroud) import java.util.*;
public class CyclicShiftApp{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
while(scan.hasNextInt()){
list.add(scan.nextInt());
}
Integer[] nums = new Integer[list.size()];
nums = list.toArray(nums);
for(int i = 0;i < nums.length; i++){
System.out.println(nums[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
感谢poor-mans-debugging,我发现while(scan.hasNextInt())实际上并没有添加任何东西。可能出什么问题了?是我的 google-fu 弱还是缺乏专业知识让我失望?我对编程很陌生,所以不熟悉列表,所以认为这将是一个不错的第一步,但并没有增加一些东西。它也编译得很好,所以它不是语法(不再)。也许是铸造问题?
我有一个包含 8000 个项目的整数数组列表。
我使用setParameterList方法在 hql 中设置该数组列表。
只是一个示例查询
return (Integer) sessionFactory.getCurrentSession().createQuery("update data where Id in (:list)").setParameterList("list", arrayList).executeUpdate();
Run Code Online (Sandbox Code Playgroud)
但执行查询后我收到此错误。
java.lang.StackOverflowError
at org.hibernate.hql.ast.QueryTranslatorImpl$JavaConstantConverter.visit(QueryTranslatorImpl.java:585)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:64)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:65)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在休眠状态下解决这个问题吗?可能这适用于纯 sql 查询。但我只是想知道HQL还有其他方法吗?
为什么finalize()在Java 中根本不能保证执行?是finalize()不是应该使用方法???
考虑下面的程序.
class Test{
protected void finalize()
{
System.out.println("Will i execute?");
}
public static void main(String args[])
{
Test t=new Test();
}
}
Run Code Online (Sandbox Code Playgroud)
该程序运行时有一个空输出.我们知道finalize()在对象符合垃圾收集条件之前用于清理任何外部资源,并且finalize()将由JVM调用.在内部,finalize()我们将指定在销毁对象之前必须执行的操作.是finalize()方法邪?
我试图从提供的数组(2D数组)中减去该值。我想使用泛型来做。任何人都可以帮助解决我的代码的问题。我的意思是我需要上课吗?我遇到了错误(运算符-未为参数类型T,T定义)
提前致谢。
//this method Subtracts Value from the given Matrix for all the rows but for given columns
private <T> void subtractValueFromColumns(T[][] matrix,
ArrayList<Integer> columnsIndex, T value) {
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < columnsIndex.size(); j++){
matrix[i][j] = matrix[i][j] - value;
}
}
}
Run Code Online (Sandbox Code Playgroud)