每个数据类对象都有一个组件,用于每个属性,如component1,component2等.我想知道Kotlin中是否有任何方法可以迭代类的每个组件.说我上课了:
class User(age:Int, name:String)
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
for(component in aUserObject){
//do some stuff with age or name
}
Run Code Online (Sandbox Code Playgroud)
?
我正在执行网络请求,我发送文件和消息.我想有一个取消当前请求的选项.我发现了两个类似的问题,并且都建议observable.subscribe(Observer)返回具有方法的Subscription对象unsubscribe().
在我的情况下,我使用observable.subscribe(Observer)哪个是无效的.这是我的代码:
Observable<MessengerRaw> observable = mModel.sendMessage(message, companion, description, multiParts);
observable.subscribe(new Observer<MessengerRaw>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(MessengerRaw value) {
if (getView() != null) {
((MessengerActivity) getView()).resetMessegeView();
((MessengerActivity) getView()).updateMessageList();
}
}
@Override
public void onError(Throwable e) {
getData().remove(0);
if (getView() != null) {
((MessengerActivity) getView()).updateMessageList();
}
}
@Override
public void onComplete() {
hideProgress();
}
});
Run Code Online (Sandbox Code Playgroud)
那么如何取消订阅/取消我的请求?谢谢.
我需要在自定义选项卡中打开一个网页。但是,该页面显然需要用户登录。我们不希望用户被要求登录,相反,我们希望将带有 token 的 cookie 设置为 CustomTab,以便他们自动登录。我在这里读过一个答案,说这是不可能的。我理解正确吗?有办法实现目标吗?
编辑:我在 @Aris Panayiotou 的回答后尝试过,但没有成功。我在这里做错了什么?
private void openWebView() {
if (getActivity() != null) {
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager );
String cookieStringTakenFromWeb = "some cookie string with correct token";
CookieStore cookieStore = cookieManager.getCookieStore();
HttpCookie cookie = new HttpCookie("Cookie", cookieStringTakenFromWeb);
cookieStore.add(URI.create(Util.getString(R.string.myUrl)), cookie);
final CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession)
.setToolbarColor(ContextCompat.getColor(getActivity(), R.color.red))
.setShowTitle(true)
.build();
customTabsIntent.launchUrl(getActivity(), Uri.parse(Util.getString(R.string.myUrl)));
}
}
Run Code Online (Sandbox Code Playgroud) 我正在用Java实现工厂设计模式,我想在抽象类中保留一个重载方法。它会违反工厂模式概念吗?还是请提出这是否是实施Factory设计模式的正确方法?
abstract class A{
void meth(int a);
void meth(int a,int b);
}
class Factory{
public static A factoryMethod(int a){
if(a==1){
return new Ob1();
}else{
return new Ob2();
}
}
}
class Ob1 extends A{
void meth(int a){}
void meth(int a,int b){}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 MockK 进行测试。语言:科特林。我有sealed class A几个子类,例如B、C和D,它们用作函数调用的参数。我需要确保使用 的子类型之一调用函数A。为此,我尝试这样做:
verify { instance.doSomething(any<B>())}并且它通过了。然而,我尝试any<C>这样做,any<D>但它仍然通过了。
如何验证该函数是否使用类型为Band only的参数调用B?
阿罗哈!在阅读Kotling语言参考时,我注意到从不使用类的属性的关键字"private"(总是默认为public).它还说自动生成getter和setter.所以我创建了类并将其字段设为私有.但是,当我创建类的对象时,我看不到字段,也没有可用的setter和getter,除非我自己编写它们.那么这里的规则是什么?保持可见性修饰符默认(公共)或将它们设为私有并提供mutator方法?谢谢.
我正在我的新应用程序中实现 Room 数据库。设置数据库时出现此错误:
* What went wrong:
Execution failed for task ':app:kaptStandardDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
> java.lang.reflect.InvocationTargetException (no error message)
Run Code Online (Sandbox Code Playgroud)
这就是我的数据库类的样子:
@Database(
entities = [
ExternalDataModel::class
],
version = 1
)
@TypeConverters(Converters::class)
abstract class MyRoomDatabase : RoomDatabase() {
abstract fun externalsDao(): ExternalsDao
companion object {
private const val DB_NAME_PREFIX = "myt_db_user"
@Volatile
private var instance: MyRoomDatabase? = null
fun getInstance(context: Context): MyRoomDatabase{
return instance ?: synchronized(sLock) {
instance ?: buildDatabase(context, DB_NAME_PREFIX).also {
instance = it
} …Run Code Online (Sandbox Code Playgroud) 我想比较两个单元阵列,1x160(a)和80x1(b).我的单元格数组由内部有许多字符串的单元格组成.我想比较每个字符串,看看它们是否相等,然后如果它们相等,则插入新数组,否则插入0.我找不到任何功能.我试过'isequal','strfind'和其他人.所有这些都给我下一条错误消息:
如果任何输入参数是单元格数组,则第一个必须是字符串的单元格数组,第二个必须是字符数组.
这是我的代码!
function [inter]=Intersect2(a,b)
int=cell(0);
b2=[b;b];
for i=1:length(a)
if a{i,1}==b2{i,1}(1) ( or 'isequal','strfind')
int{i}=a{i};
else
int{i}=0;
end
end
Run Code Online (Sandbox Code Playgroud) 我正在实现一个EJB应用程序.此时我需要一个交易.我需要在行中执行3个方法,如果一个失败,应该回滚所有内容.在这里:http://www.conceptgo.com/gsejb/eb04.html,我找到了一个教程.我的代码:
try {
javax.transaction.UserTransaction ut = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
ut.begin();
Feeds feed = loadFeed(url);
try{
em.persist(feed);
uf.setFeedId(feed.getFeedId());
uf.setUserId(user_id);
em.persist(uf);
}catch (EntityExistsException e){
ut.rollback();
return false;
}catch (IllegalArgumentException ea){
ut.rollback();
return false;
}
if (feed.getFeedId()!= null && feed!=null) {
ut.commit();
}else{
ut.rollback();
return false;
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,我收到下一条错误消息
Caused by: java.lang.IllegalStateException: BaseTransaction.checkTransactionState
- ARJUNA016051: thread is already associated with a transaction
Run Code Online (Sandbox Code Playgroud)
谁知道原因是什么以及如何解决?
kotlin ×4
android ×3
android-room ×1
cell-array ×1
cookies ×1
ejb-3.0 ×1
java ×1
jboss ×1
matlab ×1
mockk ×1
retrofit2 ×1
room ×1
rx-java2 ×1
transactions ×1
unit-testing ×1