我在scala中有这个类:
class AuthResponse( val ip: String,
val authorized: Boolean,
val sid: String,
val uid: String,
val ratio: Double,
val skipRecording: Boolean,
val rejectReason: String,
val userTrackingState: String,
val pid: Int = conf.getString(s"WebRecorder.Environments.${conf.getString("WebRecorder.Current.Environment")}.Pid").toInt) {
// If we write val before input vars it constract the same values
//Override toString method
override def toString: String = {
"ip: " + ip + "\n" +
"authorized: " + authorized + "\n" +
"sid: " + sid + "\n" +
"uid: " + uid + "\n" +
"ratio: " + ratio + "\n" +
"skipRecording: " + skipRecording + "\n" +
"rejectReason: " + rejectReason + "\n" +
"pid: " + pid + "\n" +
"userTrackingState: " + userTrackingState
}
}
object AuthResponse {
def apply(ip: String, authorized: Boolean, sid: String, uid: String, ratio: Double, skipRecording: Boolean, rejectReason: String, userTrackingState: String): AuthResponse =
new AuthResponse(ip, authorized, sid, uid, ratio, skipRecording, rejectReason, userTrackingState)
def apply(responseAsJson: String): AuthResponse = {
new Gson().fromJson(responseAsJson, classOf[AuthResponse])
}
}
我正在尝试将其编写为java代码:
public class AuthResponse {
String ip;
Boolean authorized;
String sid;
String uid;
Double ratio;
Boolean skipRecording;
String rejectReason;
String userTrackingState;
int pid = Integer.parseInt(Configuration.prop.getProperty(""));
@Override
public String toString(){
return
("ip: " + ip + "\n" +
"authorized: " + authorized + "\n" +
"sid: " + sid + "\n" +
"uid: " + uid + "\n" +
"ratio: " + ratio + "\n" +
"skipRecording: " + skipRecording + "\n" +
"rejectReason: " + rejectReason + "\n" +
"pid: " + pid + "\n" +
"userTrackingState: " + userTrackingState + "\n");
}
class AuthResponse(){
public AuthResponse apply(String ip,boolean authorized, String sid,String uid, double ratio,boolean skipRecording, String rejectReason, String userTrackingState){
return new AuthResponse(ip,authorized,sid,uid,ratio,skipRecording,rejectReason,userTrackingState);
}
public com.pipe.pipeapp.AuthResponse apply(String responseAsJson){
return new
}
}
}
我试图看看我如何在我的类中使用与scala相同的名称来实现另一个类,我们可以使用对象和类,它是完全不同的类(因为它不是类而是对象)但是在Java中我们不能这样做,我怎样才能在java中实现相同的类,包括对象类?
答案 0 :(得分:1)
Scala object
可能会被编译成不同的东西,具体取决于里面的内容。在您的情况下,object AuthResponse
实际上是在static
本身的类似于Java class AuthResponse
方法的内容中编译的。所以它会是这样的:
public class AuthResponse {
public final String ip;
public final Boolean authorized;
public final String sid;
public final String uid;
public final Double ratio;
public final Boolean skipRecording;
public final String rejectReason;
public final String userTrackingState;
public final int pid;
public AuthResponse(String ip, Boolean authorized, String sid, String uid, Double ratio, Boolean skipRecording, String rejectReason, String userTrackingState, int pid) {
this.ip = ip;
this.authorized = authorized;
this.sid = sid;
this.uid = uid;
this.ratio = ratio;
this.skipRecording = skipRecording;
this.rejectReason = rejectReason;
this.userTrackingState = userTrackingState;
this.pid = pid;
}
public AuthResponse(String ip, Boolean authorized, String sid, String uid, Double ratio, Boolean skipRecording, String rejectReason, String userTrackingState) {
this(ip, authorized, sid, uid, ratio, skipRecording, rejectReason, userTrackingState, Integer.parseInt(Configuration.prop.getProperty("")));
}
@Override
public String toString() {
return
("ip: " + ip + "\n" +
"authorized: " + authorized + "\n" +
"sid: " + sid + "\n" +
"uid: " + uid + "\n" +
"ratio: " + ratio + "\n" +
"skipRecording: " + skipRecording + "\n" +
"rejectReason: " + rejectReason + "\n" +
"pid: " + pid + "\n" +
"userTrackingState: " + userTrackingState + "\n");
}
public static AuthResponse apply(String ip, boolean authorized, String sid, String uid, double ratio,
boolean skipRecording, String rejectReason, String userTrackingState) {
return new AuthResponse(ip, authorized, sid, uid, ratio, skipRecording, rejectReason, userTrackingState);
}
public static AuthResponse apply(String responseAsJson) {
return new Gson().fromJson(responseAsJson, AuthResponse.class);
}
}
虽然转到Java,但我会将apply
方法重命名为更有意义的方法,例如create
。你也可以为字段引入getter,而不是让它们公开,但我没有费心去缩短代码。
答案 1 :(得分:0)
我为您提供了有助于此案例Nested Classes Java的文档。这里解释何时使用嵌套类When to Use。