abstract class NumericValue{
private String a;
private String b;
public String getA() { return a; }
public void setA(String a) { this.a = a; }
public String getB() { return b; }
public void setB(String b) { this.b = b; }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
NumericValue that = (NumericValue) o;
if (a != null ? !a.equals(that.a) : that.a != null) return false;
return b != null ? b.equals(that.b) : that.b == null;
}
@Override
public int hashCode() {
int result = a != null ? a.hashCode() : 0;
result = 31 * result + (b != null ? b.hashCode() : 0);
return result;
}
}
class Abc extends NumericValue{
public static void main(String[] args) {
Abc abc = new Abc();
abc.getA();
}
}
、これはに要約:アプローチ2
sealed class NumericValueA{
abstract var a: String
abstract var b: String
}
data class AbcA(
override var a:String,
override var b:String
):NumericValueA()
:
open class NumericValueB(
open var a:String,
open var b:String
)
data class AbcB(
override var a:String,
override var b:String
):NumericValueB(a,b)
両方のアプローチは、大規模な複製する傾向
アプローチ1あなたが持っているので単に属性を継承するデータクラスがあるときあなたが指定したものすべてをもう一度書き留める - これは単に縮尺が変わっていて何らかの形で間違っていると感じます。
これは最新のJavaコードをkotlinに翻訳する最善の方法ですか?
私はあなたが何をしようとしているのか分かりません。私は翻訳することをJavaの、のように、この(書式設定のための私の謝罪): '抽象クラスNumericValue { 抽象するvar A:文字列 抽象するvar B:文字列 } データクラスAbcの( オーバーライドするvar A:文字列、 オーバーライドするvar B:String)を :NumericValue() 楽しいメイン(可変引数引数:文字列){ ヴァル・ABC = Abcの( "A"、 "B") ヴァルA = abc.a } 'あなただけではないですASのオートトランスレーションに満足していますか? –