小编Bra*_*rad的帖子

在Java中创建一个不依赖于if-else的工厂方法

目前我有一个基于给定String充当工厂的方法.例如:

public Animal createAnimal(String action)
{
    if (action.equals("Meow"))
    {
        return new Cat();
    }
    else if (action.equals("Woof"))
    {
        return new Dog();
    }

    ...
    etc.
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是在类列表增长时避免整个if-else问题.我想我需要有两个方法,一个将字符串注册到类,另一个根据操作的字符串返回类.

在Java中这样做的好方法是什么?

java string factory

38
推荐指数
5
解决办法
2万
查看次数

尝试从URI启动时,"导出的活动不需要权限"

我正在尝试使用此SO问题作为参考从URI启动Android应用程序.

我有一个清单文件,其中包含以下声明的活动:

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="http" android:host="example.com" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用http://example.com链接启动MainActivity .我的问题是我得到了警告

"exported activity does not require permission"
Run Code Online (Sandbox Code Playgroud)

我已经查看了报告此相同警告的其他SO问题,并且所有解决方案似乎都不起作用.

如何正确编写活动intent-filter以避免警告?

谢谢

android uri intentfilter

36
推荐指数
3
解决办法
3万
查看次数

Android 9补丁工具:什么是新的布局界限功能?

我已经更新了Android SDK的r20并启动了9补丁工具.

似乎有一个新功能 - 保持控制并单击添加布局边界,称为红色像素.

我看了一下文档,但似乎已经过时了.

我的问题是,使用的布局边界是什么以及使用它们的最佳方式是什么?

谢谢.

android nine-patch

32
推荐指数
2
解决办法
1万
查看次数

java:如何修复未选中的强制转换警告

我有以下代码:

private HashMap<Class<?>, HashMap<Entity, ? extends Component>> m_componentStores;

public <T extends Component> T getComponent(Entity e, Class<T> exampleClass)
{
    HashMap<Entity, ? extends Component> store = m_componentStores.get(exampleClass);

    T result = (T)store.get(e);

    if (result == null)
    {
        throw new IllegalArgumentException( "GET FAIL: "+e+" does not possess Component of class\nmissing: "+exampleClass );
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,它显示T result = (T)store.get(e)有一个未经检查的强制转换.

Type safety: Unchecked cast from capture#2-of ? extends Component to T
Run Code Online (Sandbox Code Playgroud)

为防止出现此警告,我错过了什么?

java generics casting

24
推荐指数
3
解决办法
4万
查看次数

com.android.volley.NoConnectionError - 使用Charles Proxy的Android模拟器

我想代理Android模拟器的网络流量.

我似乎无法让它发挥作用.

我的模拟器使用以下方式启动:

emulator @Nexus_5X_API_23 -http-proxy 10.0.1.17:8888
Run Code Online (Sandbox Code Playgroud)

IP和端口指向Charles在"帮助"菜单中报告的内容.

已安装SSL证书.我可以打开模拟器浏览器,Charles向我显示所有流量.浏览器照常更新.

到目前为止一切似乎都很好

现在我尝试运行我的应用程序.我的第一个网络电话通过查尔斯成功通过.响应返回,Charles显示它.但是,响应未成功传递给应用程序.

我在错误回调中设置了一个断点,我可以看到com.android.volley.NoConnectionError是由哪个引起的java.io.IOException: unexpected end of stream on Connection.

为什么Charles没有将结果正确地传回给应用程序?

我是否需要执行查尔斯配置页末尾定义的内容

HttpHost httpproxy = new HttpHost("192.168.0.101", 8888, "http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,httpproxy);
Run Code Online (Sandbox Code Playgroud)

这似乎不正确 - 我错过了什么?

proxy android android-volley charles-proxy

16
推荐指数
1
解决办法
997
查看次数

如何在Play Framework中使用持久性H2数据库而不是内存中

Java Todo List教程中使用的H2数据库如下:

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
Run Code Online (Sandbox Code Playgroud)

如何修改配置文件以使用持久数据库而不是内存中版本.我是否需要设置完全独立的数据库,还是可以修改db.default.url属性?

我正在玩Play!2.0.3.

database h2 playframework playframework-2.0

14
推荐指数
1
解决办法
1万
查看次数

如何将Java文件转换为Kotlin文件?

我正在通过Kotlin为Android开发者探索Kotlin .最初的步骤之一是使用Convert Java File to Kotlin File以查看Java和Kotlin文件的比较方式.

我很好奇这个功能是如何工作的.

该工具是否从Java输入创建抽象语法树然后转换为Kotlin?或者做得更简单?

android intellij-idea kotlin android-studio

10
推荐指数
1
解决办法
483
查看次数

Kotlin内联函数比Java匿名类更便宜吗?

抬起头来:我正在从记忆中写下一些内容,所以我可能会有一些不正确的概念.


Java具有编写匿名函数的能力.当您拥有某种事件的侦听器接口时,这非常有用.举个例子:

button.setOnClickListener(new View.OnClickListener(View v) {
    @Override
    public void onClick(View v) {
        // handle the action here
    }
});
Run Code Online (Sandbox Code Playgroud)

匿名监听器将被编译为类似于的类OnClickListener$1.class.这是Java语言的基础设计决策.一切都是对象,甚至是匿名函数.

当您想要编写功能更强大的代码库时,这就成了一个问题.大量的匿名类会创建一个大的类计数,这在Android等受限平台上可能会出现问题.

在Kotlin中,从源代码的角度来看,函数更加一流.我的问题是,Kotlin是否比Java使用匿名类更有效地将这些函数编译为字节代码,还是会遇到与Java中的大类计数相同的问题?

谢谢,

java kotlin

10
推荐指数
1
解决办法
859
查看次数

查找列表中最低的未使用唯一ID

说有一个清单.列表中的每个项目都有唯一的ID.

List [5, 2, 4, 3, 1]
Run Code Online (Sandbox Code Playgroud)

当我从此列表中删除项目时,项目中的唯一ID随之而来.

List [5, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)

现在说我想在列表中添加另一个项目,并为其提供最低的唯一ID.

在向列表中添加新项目时,获取最低唯一ID的最简单方法是什么?

这里有限制:如果我在删除项目时没有重新分配另一个项目的唯一ID,我更喜欢它.

我意识到,如果我在删除4时将唯一ID 5重新分配给唯一ID 4,那么很容易找到唯一ID.然后我可以获得列表的长度(5)并创建具有该编号的唯一ID的新项目.

那么还有另一种方法,那就是不涉及遍历整个列表?

编辑:

语言是java,但我想我正在寻找一种通用算法.

algorithm list

9
推荐指数
1
解决办法
3761
查看次数

如何处理大小超过2 MB的帖子数据

我有json发布数据与下面的模板

 {

    "themeId" : JSONString,
    "themeName" : JSONString,
    "tables" : [{
        "tableName" : JSONString,
        "records" : [{
            "recordVersion" : JSONString,
            "tableItems" : [] 
        }]
    }]

}
Run Code Online (Sandbox Code Playgroud)

在Java方面,我有这样的REST API:

@POST
@Path("/{themeId}")
@Consumes({MediaType.APPLICATION_JSON})
public Response postTheme( @PathParam("themeId") String themeId, ThemeDictionary dictionary) throws InterruptedException {
    //code to handle
}
Run Code Online (Sandbox Code Playgroud)

当发布数据小于2 MB但如何处理大于2 MB的数据大小时,它工作正常.

问题

1)我应该加入分页.

2)如果我把json分成两半,那么每一半都不是有效的json.那么,我应该接受字符串并在服务器端连接吗?

3)是否有任何好的例子来处理这种情况

4)寻找可以处理大小小于或大于2 MB的json数据的方法

java websphere json jersey java-ee

9
推荐指数
1
解决办法
3423
查看次数