我在某个日期和时间应用程序未激活显示对话框(具有Dialog主题的活动;否则没有可能做).
if (!Utils.isApplicationInForeground(context)) {
Intent i = new Intent(context, DialogActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)
Intent.FLAG_ACTIVITY_NEW_TASK=>所以当我通过主页按钮(最近的应用程序)显示的对话框DialogActivity打开而不是应用程序时启动应用程序.
如何打开我的申请?
据我所知,工厂方法是简单工厂,工厂对象是抽象工厂?和:
- 工厂方法(简单工厂):
public class SimplePizzaFactory {
public static final int CHEESE = 1;
public static final int PEPPERONI = 2;
public static final int VEGGIE = 3;
public static Pizza createPizza(int type) {
Pizza pizza = null;
if (type == CHEESE) {
pizza = new CheesePizza();
} else if (type == PEPPERONI ) {
pizza = new PepperoniPizza();
} else if (type == VEGGIE ) {
pizza = new VeggiePizza();
}
return pizza;
}
}
Run Code Online (Sandbox Code Playgroud)
工厂对象(抽象工厂):
?
我对吗?
工厂模式的实现有多少,它们的区别是什么?
我正确地看不到桥模式:
之前:
public class Main2 {
@SuppressWarnings("unused")
public static void main(String[] args) {
Car car11 = new BadNativeCar();
Car car12 = new GoodNativeCar();
Car car21 = new BadForeignCar();
Car car22 = new GoodForeignCar();
}
}
interface Car{
public void drive();
public void stop();
}
class NativeCar implements Car{
@Override
public void drive() {
}
@Override
public void stop() {
}
}
class ForeignCar implements Car{
@Override
public void drive() {
}
@Override
public void stop() {
}
}
class GoodNativeCar …Run Code Online (Sandbox Code Playgroud) 是否有意义通过这样的方式处理空指针异常
private void doWork(Object object) {
if (object == null) {
try {
throw new IllegalArgumentException();
} catch (Exception e) {
e.printStackTrace();
}
} else {
...
}
}
Run Code Online (Sandbox Code Playgroud) 我是否正确理解了访客模式的主要目的?我认为:
之前1
public class Main {
public static void main(String[] args) {
List<CompanyItem> items = new ArrayList<CompanyItem>();
items.add(new Employee(10));
items.add(new Employee(10.6));
items.add(new Employee(15.9));
items.add(new Manager(20.1));
items.add(new Boss(30));
double totalSalary = 0;
for(CompanyItem i:items){
if (i instanceof Employee) {
totalSalary += ((Employee) i).getSalary();
} else if (i instanceof Manager) {
totalSalary += ((Manager) i).getSalary();
totalSalary += ((Manager) i).getBonusses();
}else if (i instanceof Boss) {
totalSalary += ((Boss) i).getSalary();
totalSalary += ((Boss) i).getAdditionalSalary();
}
}
System.out.println(totalSalary);
}
interface CompanyItem {
} …Run Code Online (Sandbox Code Playgroud) 如果需要将异常转移到UI,处理异常的更好方法是什么.我需要使用什么:通过几种方法向用户显示适当的消息或从方法到方法返回错误代码或者其他可能的东西,抛出Checked/Unchecked(从哪个更好)
更新:
使用Android的Handler来处理所有已检查/未检查(可能只有它们)的异常是不是一个好主意,我不知道它们出现在哪里?
例如
...
catch(NUllPointerException){
UIExceptionHandler.sendEmptyMessage(...);
}
Run Code Online (Sandbox Code Playgroud)
...
onHandleMessage(...){
//handle exception here - for example show toast
}
Run Code Online (Sandbox Code Playgroud)
?
当方法可以获得空引用而不是有效的对象值时,拥有像 IllegalArgumentException 这样的自定义异常并在所有情况下抛出它是否是个好主意?
public void method(String str){
if(str == null)throw new CustomIllegalArgumentException("str cannot be null");
}
Run Code Online (Sandbox Code Playgroud)
我认为这样我总能看到这种非法参数异常和其他 RuntimeExceptions 之间的区别。
这主意好不好?
PS:我看过像Avoiding != null statements这样的帖子
**更新:**所以我会知道这是程序员意图的异常,我会有清晰的日志。
java null android nullpointerexception nullreferenceexception