我需要传递Kotlin的Pair作为参数。
<argument android:name="data" app:argType="kotlin.Pair" />
e: CreateCodeFragmentDirections.kt: (16, 15): 2 type arguments expected for class Pair<out A, out B>
<argument android:name="data" app:argType="kotlin.Pair<String, String&
我正在将一个非常老而又大的Java服务器翻译到Kotlin,并且在转换过程中尽量少做逻辑更改。我正在寻找一种方法来翻译这个Java代码片段,而不需要从根本上改变它。
考虑以下玩具代码:
interface Pet
class Dog : Pet
class Cat : Pet
class PetSitter<T : Pet> {
fun walk(pet: T) {}
}
fun main() {
val sitters: Array<PetSitter<*>> =
arrayOf(PetSitter<Cat>(), P
在Kotlin,我有一个数据类。
data class APIResponse<out T>(val status: String, val code: Int, val message: String, val data: T?)
我想声明另一个类,包括:
class APIError(message: String, response: APIResponse) : Exception(message) {}
但是Kotlin给出了错误:在com.mypackagename中定义的类com.mypackagename需要的一个类型参数
在Java中,我可以这样做:
class
在Kotlin文档中,它们展示了如何包含类型参数:
class Box<T>(t: T) {
var value = t
}
这是一个简单的例子。但我遇到了一个这样的:
abstract class SomeAdapter<T, WH: SomeViewHolder>(private val viewModel: SomeModel<T>?) {
}
我该怎么解释呢?我是否将此解释为:
SomeAdapter在实例化时接受两个参数--T和WH。构造函数接受一个viewModel。
我是C#的新手。我浏览了一下MSDN,浏览了一下enum方法,但是我不知道TEnum和enumType之间的区别。
public static bool TryParse<TEnum>(
string value,
out TEnum result)
public static string[] GetNames(
Type enumType)
这里有什么区别?对于第一种方法,返回enumType result不是更好吗?
我试过使用flattenLiveData(),但它怀疑kotlin.collections.ArrayList<LiveData<List<TabDefinition>>>,但我正在通过Collection<LiveData<List<TypeVariable(Source)>?>>
Type mismatch: inferred type is
kotlin.collections.ArrayList<LiveData<List<TabDefinition>>> /* =
java
例如,给定一个Class<T>,如何调用/调用需要Class<T> where T : Enum<T>的方法/构造函数
fun <T : Any> handleAny(classOfT: Class<T>) {
if (classOfT.isEnum) {
handleEnum(classOfT)
}
}
fun <T : Enum<T>> handleEnum(classOfT: Class<T>) { /*...*/ }
错误:inferred type T i
我正在尝试在kotlin中创建一个泛型类,我的泛型属性应该是Room Library的实体(或数据类,因为我的实体是数据类)。
@Entity()
data class MyEntity(
@PrimaryKey
var id: Int? = null,
val title: String,
)
class MyGenericClass<T : isEntity>() {
// This is the important part
}
我怎么才能刺穿它呢?
我的共享模块包含Repository类,它有两个函数,返回封装在扩展Flow的自定义类CFlow中的项列表。
我从和那里提取了和的代码
fun <T> Flow<T>.asCFlow(): CFlow<T> = CFlow(this)
class CFlow<T>(private val origin: Flow<T>) : Flow<T> by origin {
fun watch(block: (T) -> Unit): Closeable {
val job = Job()
我有一个基本枚举,如下所示 enum MyEnum<T> {
val initialValue: T
val minValue: T
val maxValue: T
} 我有几种方法,比如: protected fun setEngineValue(myEnum: MyEnum<Float>, value: Float): Boolean {}
protected fun setEngineValue(myEnum: MyEnum<Int>, value: Int): Boolean {} 我想把它合并到一个函数中,在这个函数中
让我们说,我在Java中有这个示例代码:
public class MyActivityDelegate implements ActivityMvpDelegate
其中ActivityMvpDelegate:
interface ActivityMvpDelegate<V extends MvpView, P extends MvpPresenter<V>>
转换为Kotlin的代码如下所示
class MyActivityDelegate(private val activity: Activity) : ActivityMvpDelegate<MvpVie
我将一个Java类转换为kotlin,并得到了上面提到的超类型的直接参数不允许错误投影 Java类是 public class RecipeViewHolder extends ParentViewHolder {
private static final float INITIAL_POSITION = 0.0f;
private static final float ROTATED_POSITION = 180f;
@NonNull
private final ImageView mArrowExpandImageView;
private T
在我的代码中有一个场景,其中我希望一个类为两个不同类型实现接口,如下面的示例:
interface Speaker<T> {
fun talk(value: T)
}
class Multilinguist : Speaker<String>, Speaker<Float> {
override fun talk(value: String) {
println("greetings")
}
override fun talk(value: Float) {
// Do so
我有一个java类
public class CouchbaseContainer<SELF extends CouchbaseContainer<SELF>>
当我试图在kotlin中创建对象时
val couchbase = CouchbaseContainer()
Kotlin抛错了
类型推断失败:没有足够的信息在构造函数CouchbaseContainer!> ()中推断参数SELF。请特别说明一下
但是,我能够在Java中创建这个对象,如下所示:
CouchbaseContainer couchbase = new CouchbaseContai
我正在学习用kotlin编写android应用程序。我想要显示从接口(https://api.kuroganehammer.com/api/characters)获得的一些数据。我使用IntelliJ中的JSON to kotlin插件生成了数据类。 Logcat显示我正在获取数据,但是它没有触发onResponse方法。 我尝试了调试,但是除了由于某些原因,我没有找到任何东西,onFailure和onResponse方法被忽略了。 ApiRequest: fun fetchAllCharacters(): Call<CharacterApiRequest> CharacterA
我有一个string的箭头
string [] cargs
我想从k第四个索引开始迭代它。有别的办法吗?
var iter = cargs.GetEnumerator();
for (int i = 0; i <= k; ++i) iter.MoveNext();
???
此外,我还试图在上面的代码片段中找出iter的类型。当我在Visual中悬停在它上面时,我被告知它是System.Collections.IEnumerator类型的,但是我将行更改为
IEnumerator iter = cargs.GetEnumerator();
VS告诉我Using the generic
我需要在运行时在Kotlin中动态加载类。我想检查他们是否实现了我的界面,如果是的话,都是绿色的。不幸的是,Kotlin的“聪明演员”让我失望了:
var className = "some.class.Name"
val unsafeClass = Class.forName(className).kotlin
require(unsafeClass.isSubclassOf(MyInterface::class)) {
"Class '$className' is not a MyInterface"
}
val safeClass
我是Kotlin的新手,正在尝试访问泛型类中的特定字段 我已经尝试了所有可能的解决方案-问题是我不知道如何通知Kotlin我传递的类中的字段名存在。 这是我的班级: @Entity(tableName = "coursemark_table")
@Parcelize
class CourseMark(
@field:PrimaryKey
@field:ColumnInfo(name = "coursemark_number")
var number: Int,
var name: String,
var latitude
我很想知道SingleOrFallback方法是如何在中实现的,并发现了一些我以前从未见过的东西:
public static T SingleOrFallback<T>(this IEnumerable<T> source, Func<T> fallback)
{
source.ThrowIfNull("source");
fallback.ThrowIfNull("fallback");
using (IEnumerator<T> iterator
安卓源码提示findViewById可以返回null: @Nullable
public final <T extends View> T findViewById(@IdRes int id) {
if (id == NO_ID) {
return null;
}
return findViewTraversal(id);
} 但是当从Kotlin调用它时,编译器在使用这种方式时不会抱怨可空性: private lateinit var swipeRefreshLayout: SwipeRefreshLayout
...
swipeRef
我正在和Kotlin一起探索并积极使用仿制药。
Kotlin +泛型对我来说是一个很大的难题,所以与Java相比,也许您可以解释并帮助我理解它是如何工作的。
我有AbstracApiClient类(不是很抽象)
class AbstracApiClient {
open protected fun makeRequest(requestBuilder: AbstractRequestBuilder) {
// ...
}
}
AbstractRequestBuilder (不是很抽象):
open class AbstractRequestBuilder {
...
我试图构建一个Delphi桥文件来访问用Kotlin编写的Android库。解压缩的.jar有以下声明:
public interface Function<R> {}
public interface Function2<P1, P2, R> extends Function<R> {
R invoke(P1 var1, P2 var2);
}
public final class Unit {
// snip
}
public interface Controller {
void getNearbyStops(@NotNu
我在Java库中声明了以下方法:
Engine.java:
public <T extends EntitySystem> T getSystem(Class<T> systemType)
Entity.java:
public <T extends Component> T getComponent(Class<T> componentClass)
现在,我经常使用这些方法,我非常希望使用MyComponent::class (即kotlin反射),而不是到处使用更冗长的javaClass<MyComponent>()。
我的Ent