gpt4 book ai didi

java - 如何将包含结构的嵌套枚举从 Swift 转换为 Java?

转载 作者:行者123 更新时间:2023-11-30 11:15:53 27 4
gpt4 key购买 nike

我正在尝试将以下 Swift 4.1.2 代码转换为 Java 1.5 或更高版本。我有包含各种结构的嵌套枚举。

import UIKit

enum CreateOrder
{
enum FormatUseByDate
{
struct Request
{
var date: Date
}
struct Response
{
var date: Date
}
struct ViewModel
{
var date: String
}
}
}

Java 不支持 struct 关键字。但是,与上述结构之一等效的 struct 可能是:

class Request
{
public Date date;
}

我已经多次尝试创建嵌套枚举并引用等效结构。如:

import java.util.Date;

interface Usecase {
}

class Response implements Usecase {
public Date date;
}

class Request implements Usecase {
public Date date;
}

class ViewModel implements Usecase {
String date;
}


public class EnumDemo {

enum CreateOrder {

FORMATUSEBYDATE;

enum FormatUseByDate {

REQUEST(new Request()), RESPONSE(new Response()), VIEWMODEL(new ViewModel());

Usecase usecase;

FormatUseByDate(Request req) {
this.usecase = req;
}

FormatUseByDate(Response res) {
this.usecase = res;
}

FormatUseByDate(ViewModel vm) {
this.usecase = vm;
}
}
}

public static void main(String[] args) {
System.out.println(CreateOrder.FormatUseByDate.REQUEST); // Attempt at referencing the REQUEST struct equivalent
}

}

但是,我不确定如何引用用作枚举中的 struct 等效项的 class 以及它们是否可以在枚举。

最佳答案

如果我确实需要像CreateOrder.UpdateOrder.Response这样的东西,我可以写这样的东西,但你应该知道Swift中的干净在Java中可能不干净。

import java.util.Date;

public final class CreateOrder {
private CreateOrder() {}

public final class FormatUseByDate {
private FormatUseByDate() {}

public class Response {
public Date date;

@Override
public Object clone() throws CloneNotSupportedException {
Object cloned = super.clone();
//...
return cloned;
}
}

public class Request {
public Date date;

@Override
public Object clone() throws CloneNotSupportedException {
Object cloned = super.clone();
//...
return cloned;
}
}

public class ViewModel {
String date;

@Override
public Object clone() throws CloneNotSupportedException {
Object cloned = super.clone();
//...
return cloned;
}
}
}
}

您可能需要为每个赋值(包括向方法传递参数)调用 clone() 来模拟 Swift struct 的值语义。

关于java - 如何将包含结构的嵌套枚举从 Swift 转换为 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51756363/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com