在公共类中我们希望基于包名称的switchcase在每种情况下我们都调用一个公共URL ..我试过这种方式它不工作切换案例
public class AllChanges {
Context context;
Switch(getPackageName()) {
case "com.agilerise.package1":
public static String gurl = "http://google.com/index.php";
break;
case "com.agilerise.package2":
public static String gurl = "http://bing.com/index.php";
case "com.agilerise.package2":
public static String gurl = "http://stackoverlfow.com/index.php";
break;
}
}
答案 0 :(得分:0)
public class AllChanges {
public static String gurl ="";
public void seturl()
{
Switch(getPackageName()) {
case "com.agilerise.package1":
gurl = "http://google.com/index.php";
break;
case "com.agilerise.package2":
gurl = "http://bing.com/index.php";
break;
case "com.agilerise.package2":
gurl = "http://stackoverlfow.com/index.php";
break;
}
}
}
像这样打电话
AllChanges allchanges=new AllChanges();
allchanges.seturl();
答案 1 :(得分:0)
我建议你阅读scope
。
https://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.3
您需要在类范围中声明变量。你的开关盒必须在一个功能内。你的例子有一个重复的案例,你应该解决这个问题。 com.agilerise.package1
,com.agilerise.package2
,com.agilerise.package3
public class AllChanges {
public static String gurl = "";
Context context;
private void myFunction(){
switch(getPackageName()) {
case "com.agilerise.package1":
gurl = "http://google.com/index.php";
break;
case "com.agilerise.package2":
gurl = "http://bing.com/index.php";
break;
case "com.agilerise.package3":
gurl = "http://stackoverlfow.com/index.php";
break;
}
}
}
这是一个更优雅的解决方案。您应该尝试避免使用静态变量。然后,您可以通过String url = getUrl(myFunction());
private String getUrl(String s){
switch(s) {
case "com.agilerise.package1":
return "http://google.com/index.php";
case "com.agilerise.package2":
return "http://bing.com/index.php";
case "com.agilerise.package3":
return "http://stackoverlfow.com/index.php";
default:
return "SomeDefaultUrl";
}
}
答案 2 :(得分:0)
更好的方法是在这里使用多态:
您应该定义一个接口,而不是检查类包(可能会有所不同并导致子类的重复条目):
interface GoogleSearchEngineSelector extends SearchEngineSelector{
URL THE_URL = new URL("http://google.com/index.php");
default public URL getSearchEngineUrl(){
return THE_URL;
}
然后你有专门的子接口和默认方法:
class SomeClass implements GoogleSearchEngineSelector {
// ...
}
然后,您的类可以实现一个专用子接口:
{{1}}
并且您的代码更改为: Nothing
因为子类无关...
答案 3 :(得分:0)
Java无法正常工作。您只能在Java中的functions
内编写语句。变量的声明可以在class
之外的functions
中出现。