想象一下以下场景:
class MyClass extends OtherClass<String>{
String myName;
//Whatever
}
class OtherClass<T> {
T myfield;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用特定的反射分析MyClass (MyClass.class).getDeclaredFields(),在这种情况下,我将得到以下字段(和类型,使用字段的getType()):
myName --> String
myField --> T
Run Code Online (Sandbox Code Playgroud)
我想获得T的实际类型,由于扩展符号中的显式"字符串",它在运行时已知,如何获取myField的非遗传类型?
编辑决议:
似乎答案是"你不能".对于那些以后可能会看到这个问题的人,我建议使用Jackson(我试图这样做来生成JSON)并以这样的方式注释你的类和字段,以便杰克逊知道继承层次结构并且可以自动做什么建议如下正确答案.
我有一个使用OpenGL和GLUT在屏幕上显示一些内容的应用程序.我想访问"逐个像素"显示的颜色,但我无法理解所提供的方法.
似乎访问这些数据的方法是使用函数:
readPixels :: Position -> Size -> PixelData a -> IO ()
这肯定是非Haskelly,因为它使用C模式获取目标指针并写入该指针.
第三个参数是重要的部分,它的构造就像PixelData PixelFormat DataType (Ptr a). PixelFormat并且DataType都是枚举,前者采取的价值观RGBAInteger, RGBA, CMYK, etc和后者采取的价值如UnsignedByte, Short, Float, etc. 选择令我困惑,但这不是真正的问题.我真正在努力使用指针.我不知道要创建指针的Storable数据类型malloc,或者如果我选择使用要分配多少字节mallocBytes.
我有一个我正在搞乱的功能,目前看起来像这样:
pixels :: IO ()
pixels = do
pointer <- mallocBytes 50000
let pdata = PixelData RGBA Int pointer
let pos = Position 0 0
let siz = Size 10 10
readPixels pos siz pdata
print pdata
mypixels <- …Run Code Online (Sandbox Code Playgroud) 我有一个自定义的DialogFragment类,如下所示:
/**
* Dialog Fragment containing rating form.
*/
public class RatingDialogFragment extends DialogFragment {
public static final String TAG = "RatingDialog";
// ...
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.dialog_rating, container, false);
ButterKnife.bind(this, v);
return v;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
根视图是一个 LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
Run Code Online (Sandbox Code Playgroud)
每个孩子的观点都有android:layout_height="wrap_content".
但它看起来像这样.我能做错什么?
我喜欢将Class对象表示为JSON.例如,如果我有类定义如下:
public class MyClass {
String myName;
int myAge;
MyOtherClass other;
}
public class MyOtherClass {
double myDouble;
}
Run Code Online (Sandbox Code Playgroud)
我想从MyClass类型的Class对象中获取以下嵌套JSON:
{
myName: String,
myAge: int,
other: {
myDouble: double;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我不想序列化这些类的实例,我理解如何使用GSON.我想序列化类本身的结构,因此给定一个专有类Object我可以生成JSON,将类的字段递归地分解为标准对象,如String,Double等.
假设我正在制作一个Android库(以分发.aar),并且我想在内部库代码中使用Java 8语言功能。基本内容,例如lambdas等。
以我的经验,如果我随后汇编并发布此库,则任何依赖它的开发人员都将在构建时出错,除非他们将其添加到他们的build.gradle:
android {
// ...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以编译我的库,从而使消费者不必这样做吗?假定该库的公共API表面不包含任何Java 8特定功能。
所以我正在制作一款需要网络后端的Android应用.该网站正在使用Ruby on Rails构建.它有面向客户端(漂亮的HTML页面)但我也希望它能够通过JSON向我的Android应用程序提供信息.但是,我不希望整个世界能够获得这个JSON,因为它包含一些可能危险的信息.如何锁定JSON格式的页面并仍然可以从Android应用程序访问它们?
为了记录,我使用Rails 3.1 has_secure_password进行现场用户身份验证,我希望有一些为HTML请求打开但是为JSON锁定的路由(例如,/usersurl应该可以作为HTML访问,但作为JSON它可以访问应该只能通过我的应用程序访问一些安全方法).
有没有办法做到这一点,或者API必须是一个单独的应用程序(这将是非常不方便的数据库设置等)?
澄清:基本上我想要做的是从我的Rails应用程序创建一个基于令牌的安全JSON API,我不想使用Devise或某些东西会迫使我改变我已经存储我的用户/传递信息的方式.
在某种情况下,我希望我的应用程序能够"伪造"用户设备上的传入短信,作为一种通知.当我通常使用Twilio向我的用户发送文本但是我知道他们已经拥有我的应用程序时,这可以节省我的钱.有没有办法做到这一点?我想这会与Intents和内容提供商有关,但我真的不知道从哪里开始.
澄清:我不是Android新手,我确实尊重所有正常的通知方法.但是,我的应用程序将选择加入短信,我希望能够免费触发它们而不是付费.这适用于特定于SMS的用途,而不能替代正常的通知.
我有一个 TS 项目,配置如下:
tsconfig.json(部分)
{
"compilerOptions": {
"module": "commonjs",
"baseUrl": "src",
"esModuleInterop": true,
},
"include": [
"src"
]
}
Run Code Online (Sandbox Code Playgroud)
我对 NPM 包有依赖stripe:
{
// ...
"dependencies": {
"stripe": "^8.45.0",
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有以下文件:
src/routes/payments/index.ts
src/stripe/index.ts
Run Code Online (Sandbox Code Playgroud)
我在导入时遇到一些问题src/routes/payments/index.ts。我想导入stripe库,而不是我自己的代码。
这有效:
// Uses me the 'Stripe' constructor which is the default export from the package
const stripe = require('stripe')('KEY');
Run Code Online (Sandbox Code Playgroud)
这不起作用:
import Stripe from 'stripe';
const stripe = new Stripe('KEY');
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Module '"PROJECT/src/stripe/index"' has no default export.
Run Code Online (Sandbox Code Playgroud)
如何消除歧义并告诉 TS 我想 …
我有一个非常简单的Java动画任务.我需要创建一个基本的"财富小轮子".基本上将显示的是轮子和按钮.当按下该按钮时,我希望它选择一个随机的度数(例如在720-3600范围内)并旋转许多度数的轮子.然后我将使用一些逻辑将该度数转换为货币值.我的问题在于动画,如何让图像以恒定的速度旋转x度?那有摆动功能吗?非常感谢帮助,除此之外,我现在不需要了解任何有关Java动画的内容.
好的,所以我一直试图解决这个问题好几天,而且我不会来这里寻找有人为我工作,因为我一直在排除故障并修复了LogCat中的每一条错误消息.我正在使用Andengine开发Android游戏(这可能是问题的一部分,因此熟悉它可能有所帮助).我没有做任何太花哨的事情,我的游戏活动都是单一的场景,没有任何物理或类似的东西,只是一堆精灵和纹理.我还使用Andengine进行游戏中的所有其他活动,因为我觉得这是一种非常简单的方法来设置图形吸引人的屏幕.一个这样的屏幕是我的应用程序商店,用户可以购买levelpacks和新的精灵.这一切的计费部分都很有效,购买通过市场,没有什么太复杂的...
当用户点击购买时,弹出市场屏幕并加载他们选择的产品(这些是真实产品,而不是Android测试,尽管游戏未发布).市场屏幕弹出当前活动,无论我是否使用"Android 2.0"实现,它是游戏堆栈的一部分,或者我使用"Android 1.6"实现,它是自己的堆栈的一部分.我更喜欢使用Android 2.0实现,但如果我只能让1.6工作,我将采取.所以无论如何,当用户使用后退按钮取消购买或使用信用卡完成购买时,问题就出现了,这两者都导致市场屏幕消失,应用程序启动一个只是黑屏的新活动(最终时间出来并使力量接近).购买通过确定,但用户没有获得产品,因为游戏力量在我们到达代码之前退出以更改用户在游戏中的项目.现在对于一些代码,我使用本教程(http://www.anddev.org/advanced-tutorials-f21/simple-inapp-billing-payment-t52060.html)而没有做太多改动.BillingHelper类是最重要的,因为它包含requestPurchase()方法和startBuyPageActivity()方法.我从我的StoreFront活动中调用请求购买,如下所示:
BillingHelper.requestPurchase(StoreFront.this, itemID);
Run Code Online (Sandbox Code Playgroud)
在StoreFront的onCreate中我有这些东西(据tut所说):
startService(new Intent(mContext, BillingService.class));
BillingHelper.setCompletedHandler(mTransactionHandler);
Run Code Online (Sandbox Code Playgroud)
...
//some handler that billing needs
public Handler mTransactionHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
Log.i(TAG, "Transaction complete");
Log.i(TAG, "Transaction status: "+BillingHelper.latestPurchase.purchaseState);
Log.i(TAG, "Item purchased is: "+BillingHelper.latestPurchase.productId);
if(BillingHelper.latestPurchase.isPurchased()){
//TODO do something here if we've completed our latest purchase,
//this should be with the status bar notifications and
//saved preferences
}
};
};
Run Code Online (Sandbox Code Playgroud)
所以我不认为那里存在问题.以下是BillingHelper的相关部分
protected static void requestPurchase(Context activityContext, String itemId){
if (amIDead()) {
return;
}
Log.i(TAG, …Run Code Online (Sandbox Code Playgroud) android timeout andengine in-app-billing android-pendingintent