Java是否为重载方法使用早期绑定有什么特定原因?是不是可以使用后期绑定?
例:
public class SomeClass {
public void doSomething(Integer i) {
System.out.println("INTEGER");
}
public void doSomething(Object o) {
System.out.println("OBJECT");
}
public static void main (String[] args) {
Object i = new Integer(2);
Object o = new Object();
SomeClass sc = new SomeClass();
sc.doSomething(i);
sc.doSomething(o);
}
}
Run Code Online (Sandbox Code Playgroud)
打印:对象对象
我宁愿期待:INTEGER OBJECT
我正在努力获得与JPA(提供者:Hibernate)一起使用的单向一对一关系.在我看来,这不应该是一个麻烦,但显然JPA/Hibernate不同意这一点;-)
问题是我必须映射一个我无法更改的遗留模式,并且此模式在两个实体之间使用共享主键,同时它是一个实体的外键.
我创建了一个简单的TestCase:
DB如下所示:
CREATE TABLE PARENT (PARENT_ID Number primary key, Message varchar2(50));
CREATE TABLE CHILD (CHILD_ID Number primary key, Message varchar2(50),
CONSTRAINT FK_PARENT_ID FOREIGN KEY (CHILD_ID )REFERENCES PARENT (PARENT_ID));
CREATE SEQUENCE SEQ_PK_PARENT START WITH 1 INCREMENT BY 1 ORDER;
Run Code Online (Sandbox Code Playgroud)
父母(=一对一的拥有方)看起来如下:
@Entity
@Table(name = "PARENT")
public class Parent implements java.io.Serializable {
private Long parentId;
private String message;
private Child child;
@Id
@Column(name = "PARENT_ID", unique = true, nullable = false, precision = 22, scale = 0)
@SequenceGenerator(name="pk_sequence", sequenceName="SEQ_PK_PARENT")
@GeneratedValue(generator="pk_sequence", strategy=GenerationType.SEQUENCE) …Run Code Online (Sandbox Code Playgroud) 我想将一个sessioncoped CDI bean注入无状态EJB.在EJB的访问时,应该使用sessionscoped cdi bean的正确实例(即调用者的sessionscope中的那个).我知道我可以使用有状态EJB来解决这个问题,但是我真的想知道这是否可以用CDI解决.由于EJB和Servlet在同一个战争中运行,我假设它们共享相同的线程,容器应该能够在EJB中找出正确的sessioncoped bean?
例如:
EJB:
@Stateless
@LocalBean
public class StatelessSessionBean {
@Inject
Instance<SessionData> sessionData;
public String testMethod() {
SessionData bean = sessionData.get();
String result = "Retrieved bean " + bean + " with UUID "+ bean.uuid + ". Created on: " + new SimpleDateFormat("dd.MM.yyyy HH:mm").format(bean.creationDate);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
CDI Bean:
@SessionScoped
public class SessionData implements Serializable {
String uuid;
Date creationDate;
public SessionData() {
uuid = UUID.randomUUID().toString();
creationDate = new Date();
}
}
Run Code Online (Sandbox Code Playgroud)
当我现在从servlet访问无状态EJB时,我希望testMethod使用与调用者的HTTPSession关联的CDI bean.因此,如果来自不同浏览器/ http会话的两个客户端访问Servlet,则它们应该获得不同的结果字符串. …
我已经将这个问题发布到亚马逊开发者论坛,但没有得到答案.我想Stackoverflow应该是从一开始的第一选择:
根据我的理解,如果我使用自定义槽类型,即使其可能值的列表不包含口语单词,仍然会将口语单词传递给该功能.文档说'自定义插槽类型不等同于枚举.如果口语理解系统认可,列表外的值仍可能被返回.
现在我有一个自定义插槽类型,LIST_OF_PERSONS其中包含值Matthias|Max和值
EmployeeDetailsIntent {Person}
Run Code Online (Sandbox Code Playgroud)
如果我使用不在LIST_OF_PERSONSIntent中的值调用此意图仍然会被调用,但JSON不包含Slot的"value"键:
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.a943e233-0713-4ea5-beba-d9287edb6083",
"locale": "de-DE",
"timestamp": "2017-03-09T14:38:29Z",
"intent": {
"name": "EmployeeDetailsIntent",
"slots": {
"Person": {
"name": "Person"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是"按设计工作"还是一个错误?我如何访问意图中的口语呢?那this.event.request.intent.slots.Person.value是不确定的?
我的代码位于AWS lambda中,我使用的是nodejs alexa-sdk版本1.0.7.我的技能语言是德语.
我正在尝试在我的子组件中使用[(ngModel)],其中一个字符串通过@Input()从我的父组件传递到我的子组件.
然而,双向绑定似乎不起作用.字符串正确地从父项传入,但是当我在子项中编辑它时,父项的值不会更新.
我错过了什么?
家长:
@Component({
selector: 'my-app',
template: `
<div>
<child [(value)]="name"></child>
<p>{{name}}</p>
</div>
`,
})
export class App {
name:string = 'MyValue';
constructor() {
}
}
Run Code Online (Sandbox Code Playgroud)
儿童
import {Component, Input} from '@angular/core'
@Component({
selector: 'child',
template: `
<div>
<p>My custom input</p>
<textarea [(ngModel)]="value"></textarea>
</div>
`,
})
export class Child {
@Input() value:string;
constructor() {
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个plnkr来说明问题:https://plnkr.co/edit/jCF5kt73P38EFYUAZF6l
java ×2
java-ee ×2
alexa ×1
alexa-skill ×1
alexa-slot ×1
angular ×1
cdi ×1
ejb ×1
glassfish-4 ×1
hibernate ×1
jpa ×1
one-to-one ×1
polymorphism ×1
typescript ×1
weld ×1