我正在阅读关于泛型的Effective Java第5章,特别是关于泛型方法的项目.我注意到有时候返回类型之前的方法声明中的类型参数(在尖括号之间)有时会被省略.有很多这样的情况,但例如在第二版的第135页:
public void popAll(Collection<E> dst) {
while (!isEmpty())
dst.add(pop());
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我在声明中看到过类似的泛型方法
public <E> void ...
Run Code Online (Sandbox Code Playgroud)
第一个是拼写错误吗?如果不是,我何时可以省略声明中的括号?
谢谢
使用相机API,我能够成功拍照并将其保存到文件夹中.这是我正在使用的代码:
main.xml中:
<FrameLayout
android:id="@+id/camera_preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
<Button
android:id="@+id/button_capture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Capture" />
Run Code Online (Sandbox Code Playgroud)
助手类:
import java.io.IOException;
import android.content.Context;
import android.hardware.Camera;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class CameraPreview extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
// Constructor that obtains context and camera
@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera) {
super(context);
this.mCamera = camera;
this.mSurfaceHolder = this.getHolder();
this.mSurfaceHolder.addCallback(this);
this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.setDisplayOrientation(90);
mCamera.startPreview();
} catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个停止和等待算法.我在发件人实施超时时遇到问题.在等待来自接收方的ACK时,我正在使用recvfrom()函数.然而,这使程序空闲,我无法按照超时重新传输.
这是我的代码:
import socket
import time
mysocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
ACK= " "
userIn=raw_input()
if not userIn : break
mysocket.sendto(userIn, ('127.0.0.01', 88))
ACK, address = mysocket.recvfrom(1024) #the prog. is idle waiting for ACK
future=time.time()+0.5
while True:
if time.time() > future:
mysocket.sendto(userIn, ('127.0.0.01', 88))
future=time.time()+0.5
if (ACK!=" "):
print ACK
break
mysocket.close()
Run Code Online (Sandbox Code Playgroud) 如果我有一个具有两个字段Name(String)和ID(整数)的person类,我如何在数据库中保存此类的实例?是否可以定义新的数据类型Person?或者我是否需要在包含列名称,ID的数据库中一个接一个地保存字段?而对于第二种情况,下面的代码是适当的方法吗?
Connection con = DriverManager.getConnection(
"jdbc:myDriver:myDatabase",
username,
password);
Person P1;
Statement stmt = con.createStatement();
stmt.execute("INSERT INTO TABLE VALUES ("+ P1.Name ", " + P1.ID ")");
Run Code Online (Sandbox Code Playgroud)