下面的代码给出了编译时错误类型不匹配:无法从int转换为byte
int i = 10;
byte b = i;
Run Code Online (Sandbox Code Playgroud)
但下面没有
final int i = 10;
byte b = i;
Run Code Online (Sandbox Code Playgroud)
我不明白为什么编译器在最终的情况下表现?
谁决定数据类型的大小,比如Java中的int?JVM或OS或处理器?
int size是4个字节.无论是OS还是处理器,它总是4个字节吗?
我很熟悉Spring AOP.正如我在春季文档http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/aop.html中所读到的那样,Spring AOP研究代理的概念.
在8.2.3.1支持的切入点指示符部分中,我找到了以下注释
由于Spring的AOP框架基于代理的特性,受保护的方法根据定义不会被拦截,既不用于JDK代理(这不适用),也不用于CGLIB代理(这在技术上可行,但不建议用于AOP).因此,任何给定的切入点都只能与公共方法匹配!
起初,我不相信它,所以我试图在不使用接口的情况下实现它,默认情况下所有方法都是公开的,并且对上述情况感到惊讶.由于代理类是建议/目标对象的子类,受保护的方法可以由子类访问,所以我认为受保护的方法可以正常工作.
有人可以告诉我为什么不拦截受保护的方法?我错过了什么吗?
我熟悉Spring Framework并且已经完成了一些工作.
在我的一次访谈中,我被问到"在Apache Tomcat中部署了一个Web应用程序;告诉我"Tomcat容器"(用于servlet)如何与"Spring IoC容器"(用于Spring bean)进行交互?
我无法理解采访者的意思是什么,并且无言以对.有人可以澄清一下这个问题的内容以及它的合理答案是什么?
假设我们在客户和电话之间有一对多的关系.
class Customer{
@OneToMany(cascade = {CascadeType.ALL},mappedBy = "customer", fetch = FetchType.LAZY)
@Fetch( FetchMode.SELECT)
private List<Phone> phoneList;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,fetch = FetchType.LAZY和FetchMode.SELECT之间有什么区别.
我读到它们都是相同的,即它们都懒洋洋地加载了底层集合.
有人可以解释一下我什么时候使用?
我正在尝试使用Hibernate注释.当我尝试使用Cascading时,我在Eclipse intellisense中得到两个选项:
javax.persistence.CascadeType and org.hibernate.annotations.CascadeType
Run Code Online (Sandbox Code Playgroud)
在休眠CascadeType中,给出了许多选项,而不是JPA的选项.
一个人有什么优势吗?
我PMD在我的Java项目中使用代码审查.
只是想知道"PMD"的缩写词.我在谷歌搜索但找不到任何东西.有人知道吗?
可能重复:
从Equals方法返回false而不覆盖
我的一位同事今天问了我一个问题,如下所述
编写TestEquals类(自定义或用户定义的类),以便打印代码中的以下sop false.
public class Puzzle3 {
public static void main(String[] args) {
TestEquals testEquals = new TestEquals();
System.out.println(testEquals.equals(testEquals));
}
}
Run Code Online (Sandbox Code Playgroud)
注意:您不能覆盖equals方法.
我想了很多,但没有超越平等就找不到解决方案.有人知道如何做到这一点吗?
我运行了以下代码
String str = null;
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
输出为空.
起初,我认为NullPointerException将抛出对象隐式调用toString方法.所以,我对输出感到惊讶.
然后我考虑了输出,并认为上面的String语句实际上没有创建任何对象,只创建了不指向任何对象的引用.这可能是这种输出的原因.
如果我的理解是正确的,有人可以告诉我.
我有两个豆,父母和孩子.子bean我已声明为Protoype范围.
我想新的子对象用于调用Parent类中的任何子方法.例如.在下面的例子中,我希望语句1调用方法sayHi对不同的子对象和语句2调用sayHi1对不同的子对象.
一种方法是在调用任何子方法之前实现ApplicationContextAware并获取新的子对象context.getBean("").但我不想这样做.
还有其他选择吗?
@Component
public class Parent{
@Autowired
Child child;
public void sayHello(){
child.sayHi(); -------------- (1)
}
public void sayHello1(){
child.sayHi1(); --------------- (2)
}
}
@Component
@Scope(value=BeanDefinition.SCOPE_PROTOTYPE)
public class Child{
public void sayHi(){
System.out.println("Hi Spring 3.0");
}
public void sayHi1(){
System.out.println("Hi1 Spring 3.0 ");
}
}
Run Code Online (Sandbox Code Playgroud)