我有一个关于Java类字段的问题.
我有两个Java类:Parent和Child
class Parent{
private int a;
private boolean b;
private long c;
// Setters and Getters
.....
}
class Child extends Parent {
private int d;
private float e;
// Setters and Getters
.....
}
Run Code Online (Sandbox Code Playgroud)
现在我有了一个Parent类的实例.有没有办法创建Child类的实例并复制父类的所有字段而不是逐个调用setter?
我不想这样做:
Child child = new Child();
child.setA(parent.getA());
child.setB(parent.getB());
......
Run Code Online (Sandbox Code Playgroud)
此外,Parent没有自定义构造函数,我无法在其上添加构造函数.
请给你意见.
非常感谢.
我需要a HashMap或simpy a Map,其中固定数量的元素(n)像FIFO队列一样工作.
因此,在元素编号<= n之前,新元素只需放入地图中.
对于元素编号> n,将删除第一个插入的元素,并将最新的元素放入地图中.
Java中有类似的东西,还是我必须实现它?
我通常尝试将我的类设计为不可变类,因此我在编码压力方面有很多优点.
但是在使用Spring时,我有时会注意到框架在大多数情况下"劝阻"这种设计,而不是经典的JavaBeans设计:默认构造函数+ getter/setter.
我真的不喜欢JavaBean设计的对象,因为他们疯狂的可变性.所以我想知道我是否遗漏了一些东西......
我尽量让我的课程设计尽可能优雅和可重复使用,但是框架需要改变这种设计或允许它以困难的方式...
这有什么问题?
我看看Java 8新闻与7相比,除了lambdas或新时间框架之类的非常有趣的东西,我发现引入了一个新功能(?):默认方法.
我在本文中找到了以下示例:
public interface Math {
int add(int a, int b);
default int multiply(int a, int b) {
return a * b;
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很奇怪.上面的代码看起来像一个abstract带有实现方法的类.那么,为什么要在接口中引入默认方法呢?这种方法的实际优势是什么?
在同一篇文章中,我读到了这个解释:
为什么要在接口中添加方法?我们之所以这是因为接口与它们的实现类太紧密耦合了.即,在不破坏实现者类的情况下,无法在接口中添加方法.在接口中添加方法后,其实现的所有类必须声明此新方法的方法体.
嗯,这根本不能说服我.恕我直言我相信,当一个类实现一个接口时,必须为其中的每个方法声明方法体.这肯定是一个约束,但它也证实了它的"本质"(如果你明白我的意思......)
如果你对每个继承类都有共同的逻辑,那么你将把它放到一个实现abstract类中.
那么,默认方法的真正优势是什么?(看起来更像是一种解决方法,而不是新功能...)
更新 我理解这种方法是为了向后兼容,但它仍然不能让我这么说服.接口表示类必须具有的行为.所以实现某个接口的类肯定会有这种行为.但是,如果有人可以随意更改界面,则此约束会被破坏.行为可以随时改变......我错了吗?
有时,我需要注释掉整个文件.通常情况下,我只是将类包装进去/* */,但如果类中已存在注释,那么这不起作用:
/*
class foo {
/**
* Great documentation - but this breaks my
* whole-file-comment!
*/
public void dooFoo() {
}
}
*/
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题?最好不要//在每一行插入评论.
spring-config中的auto-config = true有什么用?在哪种情况下我们应该使用它.使用auto-config = true的实际用途是什么?
当我只需要用另一个字符替换一个字符时,String.Replace(char,char)和String.Replace(字符串,字符串)之间是否存在性能差异?
我正在尝试实现一个示例应用程序来测试Callable和ExecutorService接口.
在我的应用程序中,我声明:
ExecutorService exSvc = Executors.newSingleThreadExecutor();
Run Code Online (Sandbox Code Playgroud)
然后:
Future<Integer> test = exSvc.submit(
new Callable<Integer>() {
public Integer call() {
for(int i = 0; i < 1000; i++){
System.out.println(i);
}
return 1;
}
});
Run Code Online (Sandbox Code Playgroud)
现在我试图在它终止之前停止该过程,我正在使用exSvc.shutdownNow()但它不起作用.
为了优雅地停止经典,Thread我通常使用某种条件变量.这是一种常见的跟进方法ExecutorService?
在我的Spring MVC应用程序中,我需要实现一个动态的问卷形式:我有N个问题,每个我都有3个选项.
所以在我的页面中我会有这样的东西:
| Question 1 | 1 | 2 | 3 |
| Question 2 | 1 | 2 | 3 |
| Question 3 | 1 | 2 | 3 |
| ... | 1 | 2 | 3 |
| Question N | 1 | 2 | 3 |
Run Code Online (Sandbox Code Playgroud)
问题存储在数据库中,对于我将使用单选按钮的选项.我将使用forEach标签来修改动态行,但我不知道如何ModelAttribute在这种情况下发布数据和处理绑定...
对于我的模型属性类,这可能是一个很好的结构?是否可以在Spring MVC中使用动态形式的绑定?
java ×9
spring ×4
c# ×2
spring-mvc ×2
.net ×1
coding-style ×1
collections ×1
comments ×1
fifo ×1
inheritance ×1
java-8 ×1
map ×1
performance ×1
queue ×1
servlets ×1
string ×1