以下java(android)源代码适用于调试构建,发布(签名)构建和allatori obsfucation构建(签名)。
SomeActivity.java
//Sends event to an async event processing class
public void emitEvent(){
EventHandlerClass.emit("myEvent");
}
....
//Recieves callback from EventHandlerClass
public void handleEvent(Event event){//Event object has a String field named eventField;
if(event.eventField == "myEvent"){
}else if (event.eventField == "myEvent2"){
.......
}
}
EventHandlerClass.java
public void emit(String eventName){
...//process async event
eventSource.handleEvent(new Event(eventName));
}
如您所见,回调获取一个字符串并将其与“==”进行比较 运营商。不知何故,这有效,但我真的不知道为什么这应该工作。据我所知,“==”应该是参考比较。
这意味着'event.eventField'与硬编码字符串“myEvent”具有相同的引用。有没有关于java的特殊规则来存储硬编码的字符串?