尝试显式实例化枚举类型是编译时错误
(§15.9.1).Enum中的最终克隆方法确保永远不会克隆枚举常量,并且序列化机制的特殊处理可确保不会因反序列化而创建重复实例.禁止对枚举类型进行反射实例化.总之,这四件事确保除了枚举常量定义的实例之外不存在枚举类型的实例.
除了enum声明之外,有更多枚举类型实例的缺点是什么?
当我在运行时用SupportMapFragment替换容器时,它不会填充Parent.它仅部分占据屏幕.
HomeActivity2.java
package com.example.mapdemo;
import com.meteraid.android.services.LocationService;
import android.location.Location;
import android.os.Bundle;
import android.view.Menu;
import android.view.ViewGroup.LayoutParams;
public class HomeActivity2 extends BaseActivity2 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_activity2);
LocationService locationService=LocationService.getInstance(this);
Location location=locationService.getCurrentLocation();
GoogleMapFragment mapFragment=new GoogleMapFragment();
mapFragment.setCurrentLocation(location);
android.support.v4.app.FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container,mapFragment);
fragmentTransaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home_activity2, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
GoogleMapFragment
package com.example.mapdemo;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.LayoutInflater;
import …
Run Code Online (Sandbox Code Playgroud) 我怀疑何时会为我的对象调用 hashcode method() 。我重写了 MessageThread 类的 hashcode 方法。
MainActivity.java
MessageThread messageThread=new MessageThread();
Log.e("hashcode", messageThread.hashCode()+"");
Messages messages=new Messages();
messageThread.addMessage(messages);
Log.e("hashcode after", messageThread.hashCode()+"");
Run Code Online (Sandbox Code Playgroud)
消息线程.java
公共类消息线程{
List<Messages> messages = new ArrayList<Messages>();
public boolean equals(Object o)
{
if((o instanceof MessageThread )&&(((MessageThread)o).getMessages().size()==this.getMessages().size()))
{
return true;
}
else
{
return false;
}
}
public int hashCode()
{
return messages.size();
}
public List<Messages> getMessages() {
return messages;
}
public void setMessages(List<Messages> messages) {
this.messages = messages;
}
public void addMessage(Messages message)
{
messages.add(message);
}
}
Run Code Online (Sandbox Code Playgroud)
消息.Java
public …
Run Code Online (Sandbox Code Playgroud) public class Ex
{
int a;
public Ex()
{
System.out.println("a is "+a);
}
}
Run Code Online (Sandbox Code Playgroud)
输出为:a为0
初始化的地方......
我知道int的默认值是零.我的问题是它在哪里被初始化...通过默认构造函数?(我听说默认构造函数是在我们没有提到类中的任何构造函数时创建的)