Od strony Kotlin documentation:Proszę wyjaśnić ten fragment kodu pod względem kodu C#?
// public final class Gson {
// ...
// public <T> T fromJson(JsonElement json,
// Class<T> classOfT)
// throws JsonSyntaxException {
// ...
W powyższym fragmencie kodu, rozumiem wszystko, oprócz tego, że Class<T>
rzeczy. Przypuszczam, że to jest C# równoważne z następujących:
public sealed class Gson
{
public T FromJson<T>(JsonElement json,
System.Type Type)
{
}
}
I kod klient powie coś takiego:
var gson = new Gson();
var customer = gson.FromJson<Customer>(json, typeof(Customer));
Ale nie mogę być pewien, bo cały System.Type
parametr wydaje się zbędny w powierzchnia generycznego parametru parametru T
w definicji metody.
W tym samym miejscu na tej stronie, co to jest class.java
w poniższym fragmencie?
inline fun <reified T: Any> Gson.fromJson(json):
T = this.fromJson(json, T::class.java)
Zakładam, że klasa Class
w Javie jest podobna do System.Type
więc jeśli chciał powiedzieć, typeof(Customer)
, można by powiedzieć Customer.class
? Czy to jest poprawne?
Co to jest class.java
?
Typy ogólne Java nie są dostępne w czasie wykonywania. Musisz przekazać je jako parametry, jeśli metoda musi je znać. A 'class.java' jest dobrze udokumentowaną konstrukcją kompatybilności Kotlin. – chrylis
Możliwy duplikat [jaki jest obiekt klasy (java.lang.Class)?] (Http://stackoverflow.com/questions/4453349/what-is-the-class-object-java-lang-class) –
@ AndreasBrunnet Nie jest to odpowiedni duplikat; pytanie dotyczy ogólnego wymazania. – chrylis