使用var express = require('express');
var router = express.Router();
var controllerdata2 = require('../controller/munculindata');
//---------------
var con = require('../koneksi').con;
function munculindata(res) {
con.query("select * from lat2", function (err, result) {
if (err) {
throw err;
} else {
res.render("index", {
data: result
});
}
});
}
/* GET home page. */
router.post('/login',controllerdata2.login);
router.get('/', controllerdata2.list_data);
router.get('/register',controllerdata2.register);
router.get('/home',controllerdata2.home);
router.get('/logout',function (req,res,next) {
});
router.get('/delete/:id',function (req,res,next) {
var id = req.params.id;
con.query("delete from lat2 where id = "+id,function (err) {
if(err)
throw err;
else
munculindata(res)
});
});
module.exports = router;
,我可以替换下面的函数
reified
与此
private fun <T>createFragmentX(fragmentClass: Class<T>, fragmentArgs: Bundle?): Fragment {
try {
val fragment = fragmentClass.newInstance() as Fragment
fragment.arguments = fragmentArgs
return fragment
} catch (exception: Exception) {
throw RuntimeException(exception.message)
}
}
在我看来,有了private inline fun <reified T>createFragmentZ(fragmentArgs: Bundle?): Fragment {
try {
val fragment = T::class.java.newInstance() as Fragment
fragment.arguments = fragmentArgs
return fragment
} catch (exception: Exception) {
throw RuntimeException(exception.message)
}
}
,就不再需要使用reified
或Class
。我对吗?
除了想要进行纯粹的反射工作之外,KClass
还无法实现Class
或KClass
的其他用途吗?
答案 0 :(得分:3)
在您的示例中,除了美观以外,其他没有任何作用。
如果将T
作为reified
传递,则可以像这样从KClass
类型参数reified
中检索T
val kClass = T::class
随时。然后,您拥有使用KClass
作为参数的所有选项,因此这里没有区别。
在某些情况下,您需要使用KClass
作为参数。这里有两个:
1)无内联
当您不希望函数为inline
时,因为使用reified
类型仅适用于内联函数。
2)默认值
另一种情况是默认值:
fun f(kClass: KClass<*> = Int::class) { /*...*/ }
使用类型化的参数无法实现完全相同的功能。
结论:
在所有其他情况下,请使用泛型类型参数,因为它使呼叫站点更加简洁,如下所示(可能是个人喜好):
inline fun <reified T> printType() {
println(T::class.simpleName)
}
fun printType(kClass: KClass<*>) {
println(kClass.simpleName)
}
呼叫站点
printType<Int>() // better
printType(Int::class)
答案 1 :(得分:2)
您不需要在此处将其作为参数传递,但是您的代码仍使用Class
:这就是T::class.java
。因此,是的,在许多情况下,您需要Class
,而您的情况就是其中之一。